diff --git a/DEPS b/DEPS
index 23c3bc00..32adcd7 100644
--- a/DEPS
+++ b/DEPS
@@ -308,19 +308,19 @@
   # 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': '1b72d90ed5116a9d5d6be01ee558f3069957cd13',
+  'skia_revision': '1643bb8a6a909e7fdc3e85f7939ecd2eed038745',
   # 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': '4af3cc0bf6aac83198f5f430eb881d8824d5ad81',
+  'v8_revision': '6e0e49b85051bddbad2fa43fc9b4f1ae3ab2a5c2',
   # 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': '6f03727305fc696f62f4490e35131fc1f7a4d44a',
+  'angle_revision': '055d4c2fc3b3518326b63ec17eab03f69adac0a2',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': '4dbbcd05ce72795a0fff806562e7a4bc519deee3',
+  'swiftshader_revision': '666fb5f89f5a17e4f730fb0c93cc89bb7365250b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -335,7 +335,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.20220928.2.1',
+  'fuchsia_version': 'version:9.20220929.1.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.
@@ -387,7 +387,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': '6f28dd5245070c0b63f43d27d42b1fbbf18cb845',
+  'devtools_frontend_revision': '10f0a340eb0a9492a805c3c532497347eef09331',
   # 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.
@@ -423,11 +423,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': 'f6772c1332325a0bd2be760ed4092fcf794f3c6f',
+  'dawn_revision': 'b764a15c2389e5f46e3ab2e75481740ec42ba224',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'quiche_revision': '4c1091388bcde3159196c9503d73a496009e78a5',
+  'quiche_revision': '3e90101e4b8f960b29ff93a8de8d4c37740a506b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ios_webkit
   # and whatever else without interference from each other.
@@ -447,7 +447,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libavif
   # and whatever else without interference from each other.
-  'libavif_revision': 'e0954237c40ff75dbc79991ea4774853ad09bed7',
+  'libavif_revision': 'cd0bb358f83d01867f0fa53079470043618c9af5',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling nearby
   # and whatever else without interference from each other.
@@ -491,7 +491,7 @@
 
   # If you change this, also update the libc++ revision in
   # //buildtools/deps_revisions.gni.
-  'libcxx_revision':       '11bdb46a42a9947797fb273821769a59fa2becbb',
+  'libcxx_revision':       '5ee02b299379896f90faa88f576be98c61156f26',
 
   # GN CIPD package version.
   'gn_version': 'git_revision:cc28efe62ef0c2fb32455f414a29c4a55bb7fbc4',
@@ -805,7 +805,7 @@
     Var('chromium_git') + '/external/github.com/toji/webvr.info.git' + '@' + 'c58ae99b9ff9e2aa4c524633519570bf33536248',
 
   'src/docs/website': {
-    'url': Var('chromium_git') + '/website.git' + '@' + '0f2bfe1e33befa23e452cbb310bf43d8af2ecb60',
+    'url': Var('chromium_git') + '/website.git' + '@' + 'b9ca3384fa254e5d0bfecc99537f89d006ec01b9',
   },
 
   'src/ios/third_party/earl_grey2/src': {
@@ -1199,7 +1199,7 @@
   # Tools used when building Chrome for Chrome OS. This affects both the Simple
   # Chrome workflow, as well as the chromeos-chrome ebuild.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '9e04782ad06bb63e469959244bb90c224eb4b41d',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '44ed5becfd7ae1a63c88070a23e6528961bbada5',
       'condition': 'checkout_chromeos',
   },
 
@@ -1233,7 +1233,7 @@
     Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'),
 
   'src/third_party/devtools-frontend-internal': {
-      'url': 'https://chrome-internal.googlesource.com/devtools/devtools-internal.git' + '@' + '44f34ded43f78c8e6f3f1722a7bf3574c0d27dff',
+      'url': 'https://chrome-internal.googlesource.com/devtools/devtools-internal.git' + '@' + '2103bdd5c65b68b4d8c68b5e0545cd9602c9d13d',
     'condition': 'checkout_src_internal',
   },
 
@@ -1645,7 +1645,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '0f0f1ffa169ed3be5c0e61443fb319df380634f0',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'be1ac15a7380afc310b1a7eeb7b941525fdf0b53',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1903,7 +1903,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@24eed1e54db858be536bfbc339e0325d7135f358',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@895841716b7f41442bf29b37d24405788ca7895d',
     'condition': 'checkout_src_internal',
   },
 
@@ -1933,7 +1933,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'Z_2FPzp80OEqjyi3S7fVcN483QmVqNiJz4MhAOGN92gC',
+        'version': 'W1uYgk2OV6uUYDY61zydFOyDmMJnom75jGmAz91V0hQC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1944,7 +1944,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'PaiRQaKUYT2t-qryevUhOflAvdNxw7I1mf5WwaOVo1kC',
+        'version': '-175YH83BENX1QhaDhvMX2HeTXah_MzCAhXTffTqV4MC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/accessibility/chromevox/touch_exploration_controller_unittest.cc b/ash/accessibility/chromevox/touch_exploration_controller_unittest.cc
index 561c0f91..4e06524 100644
--- a/ash/accessibility/chromevox/touch_exploration_controller_unittest.cc
+++ b/ash/accessibility/chromevox/touch_exploration_controller_unittest.cc
@@ -1184,9 +1184,9 @@
 
 TEST_F(TouchExplorationTest, GestureSwipePortrit) {
   // Rotate the window 90-degrees counter-clockwise.
-  root_window()->GetHost()->SetRootTransform(
-      gfx::Transform(0, 1, 0, 0, -1, 0, 0, root_window()->bounds().height(), 0,
-                     0, 0, 0, 0, 0, 0, 0));
+  root_window()->GetHost()->SetRootTransform(gfx::Transform::RowMajor(
+      0, 1, 0, 0, -1, 0, 0, root_window()->bounds().height(), 0, 0, 0, 0, 0, 0,
+      0, 0));
 
   SwitchTouchExplorationMode(true);
 
diff --git a/ash/ambient/ui/media_string_view.cc b/ash/ambient/ui/media_string_view.cc
index 68951a18..a8d727f 100644
--- a/ash/ambient/ui/media_string_view.cc
+++ b/ash/ambient/ui/media_string_view.cc
@@ -44,6 +44,63 @@
 
 namespace {
 
+// A layer delegate used for mask layer, with left and right gradient fading out
+// zones.
+class FadeoutLayerDelegate : public ui::LayerDelegate {
+ public:
+  FadeoutLayerDelegate() : layer_(ui::LAYER_TEXTURED) {
+    layer_.set_delegate(this);
+    layer_.SetFillsBoundsOpaquely(false);
+  }
+
+  ~FadeoutLayerDelegate() override { layer_.set_delegate(nullptr); }
+
+  ui::Layer* layer() { return &layer_; }
+
+ private:
+  // ui::LayerDelegate:
+  void OnPaintLayer(const ui::PaintContext& context) override {
+    const gfx::Size& size = layer()->size();
+    gfx::Rect left_rect(0, 0, kMediaStringGradientWidthDip, size.height());
+    gfx::Rect right_rect(size.width() - kMediaStringGradientWidthDip, 0,
+                         kMediaStringGradientWidthDip, size.height());
+
+    views::PaintInfo paint_info =
+        views::PaintInfo::CreateRootPaintInfo(context, size);
+    const auto& prs = paint_info.paint_recording_size();
+
+    // Pass the scale factor when constructing PaintRecorder so the MaskLayer
+    // size is not incorrectly rounded (see https://crbug.com/921274).
+    ui::PaintRecorder recorder(context, paint_info.paint_recording_size(),
+                               static_cast<float>(prs.width()) / size.width(),
+                               static_cast<float>(prs.height()) / size.height(),
+                               nullptr);
+
+    gfx::Canvas* canvas = recorder.canvas();
+    // Clear the canvas.
+    canvas->DrawColor(SK_ColorBLACK, SkBlendMode::kSrc);
+    // Draw left gradient zone.
+    cc::PaintFlags flags;
+    flags.setBlendMode(SkBlendMode::kSrc);
+    flags.setAntiAlias(false);
+    flags.setShader(gfx::CreateGradientShader(
+        gfx::Point(), gfx::Point(kMediaStringGradientWidthDip, 0),
+        SK_ColorTRANSPARENT, SK_ColorBLACK));
+    canvas->DrawRect(left_rect, flags);
+
+    // Draw right gradient zone.
+    flags.setShader(gfx::CreateGradientShader(
+        gfx::Point(size.width() - kMediaStringGradientWidthDip, 0),
+        gfx::Point(size.width(), 0), SK_ColorBLACK, SK_ColorTRANSPARENT));
+    canvas->DrawRect(right_rect, flags);
+  }
+
+  void OnDeviceScaleFactorChanged(float old_device_scale_factor,
+                                  float new_device_scale_factor) override {}
+
+  ui::Layer layer_;
+};
+
 // Typography.
 constexpr char16_t kMiddleDotSeparator[] = u" • ";
 
@@ -232,28 +289,17 @@
 
 void MediaStringView::UpdateMaskLayer() {
   if (!NeedToAnimate()) {
-    media_text_container_->layer()->SetGradientMask(
-        gfx::LinearGradient::GetEmpty());
+    media_text_container_->layer()->SetMaskLayer(nullptr);
     return;
   }
 
-  // Invalid container width.
-  if (media_text_container_->layer()->size().width() == 0) {
-    media_text_container_->layer()->SetGradientMask(
-        gfx::LinearGradient::GetEmpty());
-    return;
+  if (!fadeout_layer_delegate_) {
+    fadeout_layer_delegate_ = std::make_unique<FadeoutLayerDelegate>();
+    fadeout_layer_delegate_->layer()->SetBounds(
+        media_text_container_->layer()->bounds());
   }
-
-  if (media_text_container_->layer()->gradient_mask().IsEmpty()) {
-    float fade_position = static_cast<float>(kMediaStringGradientWidthDip) /
-                          media_text_container_->layer()->size().width();
-    gfx::LinearGradient gradient_mask(/*angle=*/0);
-    gradient_mask.AddStep(/*fraction=*/0, /*alpha=*/0);
-    gradient_mask.AddStep(fade_position, 255);
-    gradient_mask.AddStep(1 - fade_position, 255);
-    gradient_mask.AddStep(1, 0);
-    media_text_container_->layer()->SetGradientMask(gradient_mask);
-  }
+  media_text_container_->layer()->SetMaskLayer(
+      fadeout_layer_delegate_->layer());
 }
 
 bool MediaStringView::NeedToAnimate() const {
diff --git a/ash/ambient/ui/media_string_view.h b/ash/ambient/ui/media_string_view.h
index 636c7f1..f6553b32 100644
--- a/ash/ambient/ui/media_string_view.h
+++ b/ash/ambient/ui/media_string_view.h
@@ -23,6 +23,10 @@
 
 namespace ash {
 
+namespace {
+class FadeoutLayerDelegate;
+}
+
 // Container for displaying ongoing media information, including the name of the
 // media and the artist, formatted with a proceding music note symbol and a
 // middle dot separator.
@@ -101,6 +105,8 @@
   // With an extra copy of media info text for scrolling animation.
   views::Label* media_text_ = nullptr;
 
+  std::unique_ptr<FadeoutLayerDelegate> fadeout_layer_delegate_;
+
   // Used to receive updates to the active media controller.
   mojo::Remote<media_session::mojom::MediaController> media_controller_remote_;
   mojo::Receiver<media_session::mojom::MediaControllerObserver>
diff --git a/ash/ambient/ui/media_string_view_unittest.cc b/ash/ambient/ui/media_string_view_unittest.cc
index c881fd2..fc3c010d 100644
--- a/ash/ambient/ui/media_string_view_unittest.cc
+++ b/ash/ambient/ui/media_string_view_unittest.cc
@@ -278,8 +278,7 @@
 
   EXPECT_LT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_TRUE(
-      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
+  EXPECT_FALSE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
 }
 
 TEST_F(MediaStringViewTest, HasMaskLayerWithLongText) {
@@ -299,8 +298,7 @@
 
   EXPECT_GT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_FALSE(
-      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
+  EXPECT_TRUE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
 }
 
 TEST_F(MediaStringViewTest, MaskLayerShouldUpdate) {
@@ -320,8 +318,7 @@
 
   EXPECT_LT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_TRUE(
-      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
+  EXPECT_FALSE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
 
   // Change to long text.
   metadata.title = u"A super duper long title";
@@ -334,8 +331,7 @@
 
   EXPECT_GT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_FALSE(
-      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
+  EXPECT_TRUE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
 
   // Change to short text.
   metadata.title = u"title";
@@ -348,8 +344,7 @@
 
   EXPECT_LT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_TRUE(
-      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
+  EXPECT_FALSE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
 }
 
 TEST_F(MediaStringViewTest, ShowWhenMediaIsPlaying) {
diff --git a/ash/app_list/views/app_list_bubble_apps_page.cc b/ash/app_list/views/app_list_bubble_apps_page.cc
index c87f094..18cd12b2 100644
--- a/ash/app_list/views/app_list_bubble_apps_page.cc
+++ b/ash/app_list/views/app_list_bubble_apps_page.cc
@@ -11,6 +11,7 @@
 #include <utility>
 
 #include "ash/app_list/app_list_model_provider.h"
+#include "ash/app_list/app_list_util.h"
 #include "ash/app_list/app_list_view_delegate.h"
 #include "ash/app_list/model/app_list_model.h"
 #include "ash/app_list/views/app_list_keyboard_controller.h"
@@ -493,6 +494,10 @@
 }
 
 void AppListBubbleAppsPage::DisableFocusForShowingActiveFolder(bool disabled) {
+  toggle_continue_section_button_->SetEnabled(!disabled);
+  // Prevent container items from being accessed by ChromeVox.
+  SetViewIgnoredForAccessibility(continue_label_container_, disabled);
+
   continue_section_->DisableFocusForShowingActiveFolder(disabled);
   recent_apps_->DisableFocusForShowingActiveFolder(disabled);
   if (toast_container_)
diff --git a/ash/app_list/views/app_list_bubble_view_unittest.cc b/ash/app_list/views/app_list_bubble_view_unittest.cc
index 21fa08e..0f3cc95 100644
--- a/ash/app_list/views/app_list_bubble_view_unittest.cc
+++ b/ash/app_list/views/app_list_bubble_view_unittest.cc
@@ -1275,7 +1275,14 @@
   EXPECT_FALSE(GetFocusedView()) << GetFocusedViewName();
 }
 
+// Verifies that keyboard focus stays inside an open folder. If this test breaks
+// then one of the DisableFocusForShowingActiveFolder() methods needs to be
+// updated to include the incorrectly focused view.
 TEST_F(AppListBubbleViewTest, PressingTabMovesFocusInsideFolder) {
+  // Ensure all sections are showing, so the test verifies that none of these
+  // sections (or the hide continue section button) take focus.
+  AddContinueSuggestionResult(4);
+  AddRecentApps(5);
   AddFolderWithApps(3);
   ShowAppList();
 
diff --git a/ash/app_list/views/app_list_nudge_controller.cc b/ash/app_list/views/app_list_nudge_controller.cc
index 8598d5a..7ef72aa 100644
--- a/ash/app_list/views/app_list_nudge_controller.cc
+++ b/ash/app_list/views/app_list_nudge_controller.cc
@@ -84,7 +84,7 @@
 int AppListNudgeController::GetShownCount(PrefService* prefs, NudgeType type) {
   const base::Value::Dict& dictionary = prefs->GetDict(GetPrefPath(type));
 
-  return dictionary.FindIntByDottedPath(kReorderNudgeShownCount).value_or(0);
+  return dictionary.FindInt(kReorderNudgeShownCount).value_or(0);
 }
 
 // static
@@ -124,8 +124,8 @@
     return;
 
   // Record the reorder action so that the nudge view won't be showing anymore.
-  DictionaryPrefUpdate update(prefs, prefs::kAppListReorderNudge);
-  update->SetBoolPath(kReorderNudgeConfirmed, true);
+  ScopedDictPrefUpdate update(prefs, prefs::kAppListReorderNudge);
+  update->Set(kReorderNudgeConfirmed, true);
 }
 
 void AppListNudgeController::SetPrivacyNoticeAcceptedPref(bool accepted) {
@@ -134,9 +134,9 @@
     return;
 
   {
-    DictionaryPrefUpdate privacy_pref_update(
+    ScopedDictPrefUpdate privacy_pref_update(
         prefs, prefs::kLauncherFilesPrivacyNotice);
-    privacy_pref_update->SetBoolKey(kPrivacyNoticeAcceptedKey, accepted);
+    privacy_pref_update->Set(kPrivacyNoticeAcceptedKey, accepted);
   }
 }
 
@@ -145,9 +145,9 @@
   if (!prefs)
     return;
 
-  DictionaryPrefUpdate privacy_pref_update(prefs,
+  ScopedDictPrefUpdate privacy_pref_update(prefs,
                                            prefs::kLauncherFilesPrivacyNotice);
-  privacy_pref_update->SetBoolKey(kPrivacyNoticeShownKey, shown);
+  privacy_pref_update->Set(kPrivacyNoticeShownKey, shown);
 }
 
 bool AppListNudgeController::IsPrivacyNoticeAccepted() const {
@@ -230,8 +230,8 @@
     return;
 
   // Record the nudge as confirmed so that it will not show up again.
-  DictionaryPrefUpdate update(prefs, prefs::kAppListReorderNudge);
-  update->SetBoolPath(kReorderNudgeConfirmed, true);
+  ScopedDictPrefUpdate update(prefs, prefs::kAppListReorderNudge);
+  update->Set(kReorderNudgeConfirmed, true);
 }
 
 void AppListNudgeController::UpdateCurrentNudgeStateInPrefs(
@@ -260,7 +260,7 @@
   // Handle the case where the nudge is not active to the users.
   switch (current_nudge_) {
     case NudgeType::kReorderNudge: {
-      DictionaryPrefUpdate update(prefs, prefs::kAppListReorderNudge);
+      ScopedDictPrefUpdate update(prefs, prefs::kAppListReorderNudge);
       base::TimeDelta shown_duration =
           base::Time::Now() - current_nudge_show_timestamp_;
 
@@ -286,15 +286,15 @@
 }
 
 void AppListNudgeController::MaybeIncrementShownCountInPrefs(
-    DictionaryPrefUpdate& update,
+    ScopedDictPrefUpdate& update,
     base::TimeDelta duration) {
   // Only increment the shown count if the nudge changed to invisible state and
   // the nudge was shown long enough to the user before the nudge became
   // invisible. Note that if the nudge is inactive but visible, it doesn't count
   // as showing once to the user.
   if (!is_visible_ && is_nudge_considered_as_shown_) {
-    update->SetIntPath(kReorderNudgeShownCount,
-                       GetShownCount(GetPrefs(), NudgeType::kReorderNudge) + 1);
+    update->Set(kReorderNudgeShownCount,
+                GetShownCount(GetPrefs(), NudgeType::kReorderNudge) + 1);
   }
 }
 
diff --git a/ash/app_list/views/app_list_nudge_controller.h b/ash/app_list/views/app_list_nudge_controller.h
index 727deba..045824e 100644
--- a/ash/app_list/views/app_list_nudge_controller.h
+++ b/ash/app_list/views/app_list_nudge_controller.h
@@ -110,7 +110,7 @@
  private:
   // If the nudge is hidden and the showing duration is long enough, increments
   // the shown count in prefs.
-  void MaybeIncrementShownCountInPrefs(DictionaryPrefUpdate& update,
+  void MaybeIncrementShownCountInPrefs(ScopedDictPrefUpdate& update,
                                        base::TimeDelta duration);
 
   // The timestamp when the current nudge started showing.
diff --git a/ash/clipboard/clipboard_nudge_controller.cc b/ash/clipboard/clipboard_nudge_controller.cc
index 8406d1a..dbe8916 100644
--- a/ash/clipboard/clipboard_nudge_controller.cc
+++ b/ash/clipboard/clipboard_nudge_controller.cc
@@ -164,9 +164,9 @@
 void ClipboardNudgeController::OnActiveUserPrefServiceChanged(
     PrefService* prefs) {
   // Reset the nudge prefs so that the nudge can be shown again.
-  DictionaryPrefUpdate update(prefs, prefs::kMultipasteNudges);
-  update->SetIntPath(kShownCount, 0);
-  update->SetPath(kLastTimeShown, base::TimeToValue(base::Time()));
+  ScopedDictPrefUpdate update(prefs, prefs::kMultipasteNudges);
+  update->Set(kShownCount, 0);
+  update->Set(kLastTimeShown, base::TimeToValue(base::Time()));
 }
 
 void ClipboardNudgeController::ShowNudge(ClipboardNudgeType nudge_type) {
@@ -213,9 +213,9 @@
   if (!prefs)
     return;
   const int shown_count = GetShownCount(prefs);
-  DictionaryPrefUpdate update(prefs, prefs::kMultipasteNudges);
-  update->SetIntPath(kShownCount, shown_count + 1);
-  update->SetPath(kLastTimeShown, base::TimeToValue(GetTime()));
+  ScopedDictPrefUpdate update(prefs, prefs::kMultipasteNudges);
+  update->Set(kShownCount, shown_count + 1);
+  update->Set(kLastTimeShown, base::TimeToValue(GetTime()));
 }
 
 void ClipboardNudgeController::OnClipboardHistoryMenuShown() {
diff --git a/ash/components/arc/metrics/stability_metrics_manager.cc b/ash/components/arc/metrics/stability_metrics_manager.cc
index b6956a4f..505a489 100644
--- a/ash/components/arc/metrics/stability_metrics_manager.cc
+++ b/ash/components/arc/metrics/stability_metrics_manager.cc
@@ -71,8 +71,7 @@
 
 void StabilityMetricsManager::ResetMetrics() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  DictionaryPrefUpdate update(local_state_, prefs::kStabilityMetrics);
-  update->DictClear();
+  local_state_->SetDict(prefs::kStabilityMetrics, base::Value::Dict());
 }
 
 absl::optional<bool> StabilityMetricsManager::GetArcEnabledState() {
@@ -84,8 +83,8 @@
 
 void StabilityMetricsManager::SetArcEnabledState(bool enabled) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  DictionaryPrefUpdate update(local_state_, prefs::kStabilityMetrics);
-  update->SetBoolKey(kArcEnabledStateKey, enabled);
+  ScopedDictPrefUpdate update(local_state_, prefs::kStabilityMetrics);
+  update->Set(kArcEnabledStateKey, enabled);
 }
 
 absl::optional<NativeBridgeType>
@@ -105,9 +104,8 @@
 void StabilityMetricsManager::SetArcNativeBridgeType(
     NativeBridgeType native_bridge_type) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  DictionaryPrefUpdate update(local_state_, prefs::kStabilityMetrics);
-  update->SetIntKey(kArcNativeBridgeTypeKey,
-                    static_cast<int>(native_bridge_type));
+  ScopedDictPrefUpdate update(local_state_, prefs::kStabilityMetrics);
+  update->Set(kArcNativeBridgeTypeKey, static_cast<int>(native_bridge_type));
 }
 
 }  // namespace arc
diff --git a/ash/controls/contextual_tooltip.cc b/ash/controls/contextual_tooltip.cc
index f11a6482..a8c553a 100644
--- a/ash/controls/contextual_tooltip.cc
+++ b/ash/controls/contextual_tooltip.cc
@@ -217,15 +217,16 @@
 
 void HandleNudgeShown(PrefService* prefs, TooltipType type) {
   const int shown_count = GetShownCount(prefs, type);
-  DictionaryPrefUpdate update(prefs, prefs::kContextualTooltips);
-  update->SetIntPath(GetPath(type, kShownCount), shown_count + 1);
-  update->SetPath(GetPath(type, kLastTimeShown), base::TimeToValue(GetTime()));
+  ScopedDictPrefUpdate update(prefs, prefs::kContextualTooltips);
+  update->SetByDottedPath(GetPath(type, kShownCount), shown_count + 1);
+  update->SetByDottedPath(GetPath(type, kLastTimeShown),
+                          base::TimeToValue(GetTime()));
 }
 
 void HandleGesturePerformed(PrefService* prefs, TooltipType type) {
   const int success_count = GetSuccessCount(prefs, type);
-  DictionaryPrefUpdate update(prefs, prefs::kContextualTooltips);
-  update->SetIntPath(GetPath(type, kSuccessCount), success_count + 1);
+  ScopedDictPrefUpdate update(prefs, prefs::kContextualTooltips);
+  update->SetByDottedPath(GetPath(type, kSuccessCount), success_count + 1);
 }
 
 void SetDragHandleNudgeDisabledForHiddenShelf(bool nudge_disabled) {
@@ -238,12 +239,12 @@
 
 void ClearPrefs() {
   DCHECK(Shell::Get()->session_controller()->GetLastActiveUserPrefService());
-  DictionaryPrefUpdate update(
+  ScopedDictPrefUpdate update(
       Shell::Get()->session_controller()->GetLastActiveUserPrefService(),
       prefs::kContextualTooltips);
-  base::Value* nudges_dict = update.Get();
-  if (nudges_dict && !nudges_dict->DictEmpty())
-    nudges_dict->DictClear();
+  base::Value::Dict& nudges_dict = update.Get();
+  if (!nudges_dict.empty())
+    nudges_dict.clear();
 }
 
 void OverrideClockForTesting(base::Clock* test_clock) {
diff --git a/ash/detachable_base/detachable_base_handler.cc b/ash/detachable_base/detachable_base_handler.cc
index a6af79d..9a8afb71 100644
--- a/ash/detachable_base/detachable_base_handler.cc
+++ b/ash/detachable_base/detachable_base_handler.cc
@@ -79,8 +79,8 @@
   last_used_devices_.erase(user.account_id);
 
   if (local_state_) {
-    DictionaryPrefUpdate update(local_state_, prefs::kDetachableBaseDevices);
-    update->RemoveKey(GetKeyForPrefs(user.account_id));
+    ScopedDictPrefUpdate update(local_state_, prefs::kDetachableBaseDevices);
+    update->Remove(GetKeyForPrefs(user.account_id));
   }
 }
 
@@ -127,9 +127,9 @@
   last_used_devices_[user.account_id] = authenticated_base_id_;
 
   if (!user.is_ephemeral) {
-    DictionaryPrefUpdate update(local_state_, prefs::kDetachableBaseDevices);
-    update->SetPath({GetKeyForPrefs(user.account_id), kLastUsedByUserPrefKey},
-                    base::Value(authenticated_base_id_));
+    ScopedDictPrefUpdate update(local_state_, prefs::kDetachableBaseDevices);
+    update->EnsureDict(GetKeyForPrefs(user.account_id))
+        ->Set(kLastUsedByUserPrefKey, authenticated_base_id_);
   }
 
   return true;
diff --git a/ash/metrics/feature_discovery_duration_reporter_impl.cc b/ash/metrics/feature_discovery_duration_reporter_impl.cc
index 5df3ffe8..7bcce0f 100644
--- a/ash/metrics/feature_discovery_duration_reporter_impl.cc
+++ b/ash/metrics/feature_discovery_duration_reporter_impl.cc
@@ -136,9 +136,8 @@
                               TabletMode::Get()->IsInTabletMode());
   }
 
-  DictionaryPrefUpdate update(active_pref_service_, kObservedFeatures);
-  update->GetDict().Set(feature_name,
-                        base::Value(std::move(observed_feature_data)));
+  ScopedDictPrefUpdate update(active_pref_service_, kObservedFeatures);
+  update->Set(feature_name, std::move(observed_feature_data));
 
   // Record observation start time.
   DCHECK(active_time_recordings_.find(feature) ==
@@ -201,9 +200,8 @@
   // 1. Clearing the cumulated duration
   // 2. Marking that the observation finishes
   // 3. Erasing the saved tablet state if any
-  DictionaryPrefUpdate update(active_pref_service_, kObservedFeatures);
-  base::Value::Dict* mutable_feature_pref_data =
-      update->GetDict().FindDict(feature_name);
+  ScopedDictPrefUpdate update(active_pref_service_, kObservedFeatures);
+  base::Value::Dict* mutable_feature_pref_data = update->FindDict(feature_name);
   mutable_feature_pref_data->Remove(kCumulatedDuration);
   mutable_feature_pref_data->Set(kIsObservationFinished, true);
   mutable_feature_pref_data->Remove(kActivatedInTablet);
@@ -277,11 +275,8 @@
 
 void FeatureDiscoveryDurationReporterImpl::Deactivate() {
   if (!active_time_recordings_.empty()) {
-    DictionaryPrefUpdate update(active_pref_service_, kObservedFeatures);
-    base::Value* observed_features = update.Get();
-    DCHECK(observed_features);
-    base::Value::Dict& mutable_observed_features_dict =
-        observed_features->GetDict();
+    ScopedDictPrefUpdate update(active_pref_service_, kObservedFeatures);
+    base::Value::Dict& mutable_observed_features_dict = update.Get();
 
     // Store the accumulated time duration as pref data.
     for (const auto& name_timestamp_pair : active_time_recordings_) {
diff --git a/ash/public/cpp/shelf_prefs.cc b/ash/public/cpp/shelf_prefs.cc
index b68a608..025dab3 100644
--- a/ash/public/cpp/shelf_prefs.cc
+++ b/ash/public/cpp/shelf_prefs.cc
@@ -92,7 +92,7 @@
   if (display_id == display::kInvalidDisplayId)
     return;
 
-  // Avoid DictionaryPrefUpdate's notifications for read but unmodified prefs.
+  // Avoid ScopedDictPrefUpdate's notifications for read but unmodified prefs.
   const base::Value::Dict& current_shelf_prefs =
       prefs->GetDict(prefs::kShelfPreferences);
   std::string display_key = base::NumberToString(display_id);
@@ -105,14 +105,10 @@
       return;
   }
 
-  DictionaryPrefUpdate update(prefs, prefs::kShelfPreferences);
-  base::Value* shelf_prefs = update.Get();
-  base::Value* display_prefs_weak = shelf_prefs->FindDictKey(display_key);
-  if (!display_prefs_weak) {
-    display_prefs_weak = shelf_prefs->SetKey(
-        display_key, base::Value(base::Value::Type::DICTIONARY));
-  }
-  display_prefs_weak->SetKey(pref_key, base::Value(value));
+  ScopedDictPrefUpdate update(prefs, prefs::kShelfPreferences);
+  base::Value::Dict& shelf_prefs = update.Get();
+  base::Value::Dict* display_prefs_weak = shelf_prefs.EnsureDict(display_key);
+  display_prefs_weak->Set(pref_key, value);
 }
 
 ShelfAlignment AlignmentFromPref(const std::string& value) {
diff --git a/ash/shelf/home_button_unittest.cc b/ash/shelf/home_button_unittest.cc
index 4c899021..c6d4b44 100644
--- a/ash/shelf/home_button_unittest.cc
+++ b/ash/shelf/home_button_unittest.cc
@@ -46,36 +46,45 @@
   return ui::GestureEvent(0, 0, ui::EF_NONE, base::TimeTicks(), details);
 }
 
-class HomeButtonTest : public AshTestBase,
+class HomeButtonTestBase : public AshTestBase {
+ public:
+  HomeButtonTestBase() = default;
+  HomeButtonTestBase(const HomeButtonTestBase&) = delete;
+  HomeButtonTestBase& operator=(const HomeButtonTestBase&) = delete;
+  ~HomeButtonTestBase() override = default;
+
+  void SendGestureEvent(ui::GestureEvent* event) {
+    ASSERT_TRUE(home_button());
+    home_button()->OnGestureEvent(event);
+  }
+
+  HomeButton* home_button() const {
+    return GetPrimaryShelf()
+        ->shelf_widget()
+        ->navigation_widget()
+        ->GetHomeButton();
+  }
+
+ protected:
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+class HomeButtonTest : public HomeButtonTestBase,
                        public testing::WithParamInterface<bool> {
  public:
-  HomeButtonTest() = default;
-
-  HomeButtonTest(const HomeButtonTest&) = delete;
-  HomeButtonTest& operator=(const HomeButtonTest&) = delete;
-
-  ~HomeButtonTest() override = default;
-
-  // AshTestBase:
+  // HomeButtonTestBase:
   void SetUp() override {
     scoped_feature_list_.InitWithFeatureState(
         features::kHideShelfControlsInTabletMode,
         IsHideShelfControlsInTabletModeEnabled());
 
-    AshTestBase::SetUp();
-  }
-
-  void SendGestureEvent(ui::GestureEvent* event) {
-    HomeButton* const home_button =
-        GetPrimaryShelf()->navigation_widget()->GetHomeButton();
-    ASSERT_TRUE(home_button);
-    home_button->OnGestureEvent(event);
+    HomeButtonTestBase::SetUp();
   }
 
   void SendGestureEventToSecondaryDisplay(ui::GestureEvent* event) {
     // Add secondary display.
     UpdateDisplay("1+1-1000x600,1002+0-600x400");
-    ASSERT_TRUE(GetPrimaryShelf()
+    ASSERT_TRUE(Shelf::ForWindow(Shell::GetAllRootWindows()[1])
                     ->shelf_widget()
                     ->navigation_widget()
                     ->GetHomeButton());
@@ -89,13 +98,6 @@
 
   bool IsHideShelfControlsInTabletModeEnabled() const { return GetParam(); }
 
-  const HomeButton* home_button() const {
-    return GetPrimaryShelf()
-        ->shelf_widget()
-        ->navigation_widget()
-        ->GetHomeButton();
-  }
-
   AssistantState* assistant_state() const { return AssistantState::Get(); }
 
   PrefService* prefs() {
@@ -107,7 +109,7 @@
 };
 
 // Tests home button visibility animations.
-class HomeButtonAnimationTest : public AshTestBase {
+class HomeButtonAnimationTest : public HomeButtonTestBase {
  public:
   HomeButtonAnimationTest() {
     scoped_feature_list_.InitAndEnableFeature(
@@ -115,9 +117,9 @@
   }
   ~HomeButtonAnimationTest() override = default;
 
-  // AshTestBase:
+  // HomeButtonTestBase:
   void SetUp() override {
-    AshTestBase::SetUp();
+    HomeButtonTestBase::SetUp();
 
     animation_duration_.emplace(
         ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION);
@@ -125,7 +127,7 @@
 
   void TearDown() override {
     animation_duration_.reset();
-    AshTestBase::TearDown();
+    HomeButtonTestBase::TearDown();
   }
 
  private:
@@ -144,7 +146,7 @@
 // Tests home button visibility with number of accessibility setting enabled,
 // with kHideControlsInTabletModeFeature.
 class HomeButtonVisibilityWithAccessibilityFeaturesTest
-    : public AshTestBase,
+    : public HomeButtonTestBase,
       public ::testing::WithParamInterface<TestAccessibilityFeature> {
  public:
   HomeButtonVisibilityWithAccessibilityFeaturesTest() {
@@ -402,8 +404,7 @@
 
 // Verifies that home button visibility updates are animated.
 TEST_F(HomeButtonAnimationTest, VisibilityAnimation) {
-  views::View* const home_button_view =
-      GetPrimaryShelf()->shelf_widget()->navigation_widget()->GetHomeButton();
+  views::View* const home_button_view = home_button();
   ASSERT_TRUE(home_button_view);
   EXPECT_TRUE(home_button_view->GetVisible());
   EXPECT_EQ(1.0f, home_button_view->layer()->opacity());
@@ -436,8 +437,7 @@
 // Verifies that home button visibility updates if the button gets hidden while
 // it's still being shown.
 TEST_F(HomeButtonAnimationTest, HideWhileAnimatingToShow) {
-  views::View* const home_button_view =
-      GetPrimaryShelf()->shelf_widget()->navigation_widget()->GetHomeButton();
+  views::View* const home_button_view = home_button();
   ASSERT_TRUE(home_button_view);
 
   EXPECT_TRUE(home_button_view->GetVisible());
@@ -470,8 +470,7 @@
 // Verifies that home button becomes visible if reshown while a hide animation
 // is still in progress.
 TEST_F(HomeButtonAnimationTest, ShowWhileAnimatingToHide) {
-  views::View* const home_button_view =
-      GetPrimaryShelf()->shelf_widget()->navigation_widget()->GetHomeButton();
+  views::View* const home_button_view = home_button();
   ASSERT_TRUE(home_button_view);
 
   EXPECT_TRUE(home_button_view->GetVisible());
@@ -501,9 +500,7 @@
 // Verifies that unanimated navigation widget layout update interrupts in
 // progress button animation.
 TEST_F(HomeButtonAnimationTest, NonAnimatedLayoutDuringAnimation) {
-  Shelf* const shelf = GetPrimaryShelf();
-  views::View* const home_button_view =
-      shelf->shelf_widget()->navigation_widget()->GetHomeButton();
+  views::View* const home_button_view = home_button();
   ASSERT_TRUE(home_button_view);
   EXPECT_TRUE(home_button_view->GetVisible());
   EXPECT_EQ(1.0f, home_button_view->layer()->opacity());
@@ -512,6 +509,7 @@
   // Switch to tablet mode changes the button visibility.
   Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true);
 
+  Shelf* const shelf = GetPrimaryShelf();
   ShelfViewTestAPI shelf_test_api(shelf->GetShelfViewForTesting());
   ShelfNavigationWidget::TestApi test_api(shelf->navigation_widget());
 
@@ -769,8 +767,7 @@
 // the center point of the home button is the same as the content view's center
 // point will avoid this problem. See http://crbug.com/1083713
 TEST_P(HomeButtonTest, GestureHomeButtonHitTest) {
-  ShelfNavigationWidget* nav_widget =
-      AshTestBase::GetPrimaryShelf()->navigation_widget();
+  ShelfNavigationWidget* nav_widget = GetPrimaryShelf()->navigation_widget();
   ShelfNavigationWidget::TestApi test_api(nav_widget);
   gfx::Rect nav_widget_bounds = nav_widget->GetRootView()->bounds();
 
diff --git a/ash/shelf/launcher_nudge_controller.cc b/ash/shelf/launcher_nudge_controller.cc
index 3ed9410..576a9ae 100644
--- a/ash/shelf/launcher_nudge_controller.cc
+++ b/ash/shelf/launcher_nudge_controller.cc
@@ -200,9 +200,9 @@
     return;
 
   const int shown_count = GetShownCount(prefs);
-  DictionaryPrefUpdate update(prefs, prefs::kShelfLauncherNudge);
-  update->SetIntKey(kShownCount, shown_count + 1);
-  update->SetKey(kLastShownTime, base::TimeToValue(GetNow()));
+  ScopedDictPrefUpdate update(prefs, prefs::kShelfLauncherNudge);
+  update->Set(kShownCount, shown_count + 1);
+  update->Set(kLastShownTime, base::TimeToValue(GetNow()));
 }
 
 void LauncherNudgeController::MaybeShowNudge() {
@@ -263,8 +263,8 @@
   if (Shell::Get()->session_controller()->IsUserFirstLogin()) {
     // If the current logged in user is a new one, record the first login time
     // to know when to show the nudge.
-    DictionaryPrefUpdate update(prefs, prefs::kShelfLauncherNudge);
-    update->SetKey(kFirstLoginTime, base::TimeToValue(GetNow()));
+    ScopedDictPrefUpdate update(prefs, prefs::kShelfLauncherNudge);
+    update->Set(kFirstLoginTime, base::TimeToValue(GetNow()));
   } else if (GetFirstLoginTime(prefs).is_null()) {
     // For the users that has logged in before the nudge feature is landed, we
     // assume the user has opened the launcher before and thus don't show the
@@ -292,8 +292,8 @@
     return;
 
   if (!WasLauncherShownPreviously(prefs) && shown) {
-    DictionaryPrefUpdate update(prefs, prefs::kShelfLauncherNudge);
-    update->SetBoolKey(kWasLauncherShown, true);
+    ScopedDictPrefUpdate update(prefs, prefs::kShelfLauncherNudge);
+    update->Set(kWasLauncherShown, true);
   }
 }
 
diff --git a/ash/system/camera/autozoom_nudge_controller.cc b/ash/system/camera/autozoom_nudge_controller.cc
index 524b9b1..1685b5e 100644
--- a/ash/system/camera/autozoom_nudge_controller.cc
+++ b/ash/system/camera/autozoom_nudge_controller.cc
@@ -52,10 +52,10 @@
   // Reset the nudge prefs so that the nudge can be shown again. This observer
   // callback is only registered and called when
   // features::kAutozoomNudgeSessionReset is enabled.
-  DictionaryPrefUpdate update(prefs, prefs::kAutozoomNudges);
-  update->GetDict().Set(kShownCount, 0);
-  update->GetDict().Set(kLastTimeShown, base::TimeToValue(base::Time()));
-  update->GetDict().Set(kHadEnabled, false);
+  ScopedDictPrefUpdate update(prefs, prefs::kAutozoomNudges);
+  update->Set(kShownCount, 0);
+  update->Set(kLastTimeShown, base::TimeToValue(base::Time()));
+  update->Set(kHadEnabled, false);
 }
 
 base::Time AutozoomNudgeController::GetTime() {
@@ -68,9 +68,9 @@
   if (!prefs)
     return;
   const int shown_count = GetShownCount(prefs);
-  DictionaryPrefUpdate update(prefs, prefs::kAutozoomNudges);
-  update->SetIntPath(kShownCount, shown_count + 1);
-  update->SetPath(kLastTimeShown, base::TimeToValue(GetTime()));
+  ScopedDictPrefUpdate update(prefs, prefs::kAutozoomNudges);
+  update->Set(kShownCount, shown_count + 1);
+  update->Set(kLastTimeShown, base::TimeToValue(GetTime()));
 }
 
 bool AutozoomNudgeController::GetHadEnabled(PrefService* prefs) {
@@ -134,8 +134,8 @@
         Shell::Get()->session_controller()->GetLastActiveUserPrefService();
     if (!prefs)
       return;
-    DictionaryPrefUpdate update(prefs, prefs::kAutozoomNudges);
-    update->SetBoolPath(kHadEnabled, true);
+    ScopedDictPrefUpdate update(prefs, prefs::kAutozoomNudges);
+    update->Set(kHadEnabled, true);
   }
 }
 
diff --git a/ash/system/unified/managed_device_tray_item_view.cc b/ash/system/unified/managed_device_tray_item_view.cc
index 283a1bc..2fed069 100644
--- a/ash/system/unified/managed_device_tray_item_view.cc
+++ b/ash/system/unified/managed_device_tray_item_view.cc
@@ -49,21 +49,48 @@
   return "ManagedDeviceTrayItemView";
 }
 
+void ManagedDeviceTrayItemView::OnThemeChanged() {
+  TrayItemView::OnThemeChanged();
+  UpdateIcon();
+}
+
 void ManagedDeviceTrayItemView::HandleLocaleChange() {
-  Update();
+  UpdateTooltipText();
 }
 
 void ManagedDeviceTrayItemView::Update() {
   SessionControllerImpl* session = Shell::Get()->session_controller();
-  if (session->IsUserPublicAccount()) {
+  if (!session->IsUserPublicAccount() && !session->IsUserChild()) {
+    SetVisible(false);
+    return;
+  }
+
+  UpdateIcon();
+  UpdateTooltipText();
+  SetVisible(true);
+}
+
+void ManagedDeviceTrayItemView::UpdateIcon() {
+  const gfx::VectorIcon* icon = nullptr;
+  SessionControllerImpl* session = Shell::Get()->session_controller();
+  if (session->IsUserPublicAccount())
+    icon = &kSystemTrayManagedIcon;
+  else if (session->IsUserChild())
+    icon = &kSystemTraySupervisedUserIcon;
+
+  if (icon) {
     image_view()->SetImage(gfx::CreateVectorIcon(
-        kSystemTrayManagedIcon,
-        TrayIconColor(Shell::Get()->session_controller()->GetSessionState())));
+        *icon, TrayIconColor(session->GetSessionState())));
+  }
+}
+
+void ManagedDeviceTrayItemView::UpdateTooltipText() {
+  SessionControllerImpl* session = Shell::Get()->session_controller();
+  if (session->IsUserPublicAccount()) {
     std::string enterprise_domain_manager = Shell::Get()
                                                 ->system_tray_model()
                                                 ->enterprise_domain()
                                                 ->enterprise_domain_manager();
-    SetVisible(true);
     if (!enterprise_domain_manager.empty()) {
       image_view()->SetTooltipText(l10n_util::GetStringFUTF16(
           IDS_ASH_ENTERPRISE_DEVICE_MANAGED_BY, ui::GetChromeOSDeviceName(),
@@ -73,20 +100,10 @@
       LOG(WARNING)
           << "Public account user, but device not enterprise-enrolled.";
     }
-    return;
-  }
-
-  if (session->IsUserChild()) {
-    image_view()->SetImage(gfx::CreateVectorIcon(
-        kSystemTraySupervisedUserIcon,
-        TrayIconColor(Shell::Get()->session_controller()->GetSessionState())));
+  } else if (session->IsUserChild()) {
     image_view()->SetTooltipText(
         l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_FAMILY_LINK_LABEL));
-    SetVisible(true);
-    return;
   }
-
-  SetVisible(false);
 }
 
 }  // namespace ash
diff --git a/ash/system/unified/managed_device_tray_item_view.h b/ash/system/unified/managed_device_tray_item_view.h
index 93ffc1c..15418f6 100644
--- a/ash/system/unified/managed_device_tray_item_view.h
+++ b/ash/system/unified/managed_device_tray_item_view.h
@@ -35,10 +35,13 @@
 
   // views::TrayItemView:
   const char* GetClassName() const override;
+  void OnThemeChanged() override;
   void HandleLocaleChange() override;
 
  private:
   void Update();
+  void UpdateIcon();
+  void UpdateTooltipText();
 };
 
 }  // namespace ash
diff --git a/ash/webui/os_feedback_ui/resources/confirmation_page.html b/ash/webui/os_feedback_ui/resources/confirmation_page.html
index ab1d04a..8a308327 100644
--- a/ash/webui/os_feedback_ui/resources/confirmation_page.html
+++ b/ash/webui/os_feedback_ui/resources/confirmation_page.html
@@ -57,6 +57,11 @@
   cr-link-row::part(icon) {
     --cr-icon-button-fill-color: var(--cros-icon-color-primary);
   }
+
+  cr-link-row::part(icon):focus {
+    box-shadow: none;
+    outline: 2px solid var(--cros-focus-ring-color);
+  }
 </style>
 <div id="container">
   <div id="header">
diff --git a/ash/webui/os_feedback_ui/resources/file_attachment.html b/ash/webui/os_feedback_ui/resources/file_attachment.html
index 68372d8..aaa6014 100644
--- a/ash/webui/os_feedback_ui/resources/file_attachment.html
+++ b/ash/webui/os_feedback_ui/resources/file_attachment.html
@@ -73,7 +73,7 @@
 
   #addFileIcon {
     --cr-icon-button-fill-color: var(--cros-color-prominent);
-    --cr-icon-button-size: 34px;
+    --cr-icon-button-size: 32px;
     margin-inline-end: 4px;
     margin-inline-start: 6px;
   }
diff --git a/ash/webui/os_feedback_ui/resources/help_content.html b/ash/webui/os_feedback_ui/resources/help_content.html
index b1619b2..3048006 100644
--- a/ash/webui/os_feedback_ui/resources/help_content.html
+++ b/ash/webui/os_feedback_ui/resources/help_content.html
@@ -60,6 +60,7 @@
   }
 
   #helpContentIcon:focus {
+    border-radius: 4px;
     outline: 2px solid var(--cros-focus-ring-color);
   }
 
diff --git a/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html b/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html
index b9a5f5a..1bf259fc 100644
--- a/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html
+++ b/ash/webui/os_feedback_ui/resources/os_feedback_shared_css.html
@@ -118,6 +118,7 @@
     }
 
     .focusable:focus {
+      border-radius: 4px;
       outline: 2px solid var(--cros-focus-ring-color);
     }
 
@@ -192,5 +193,14 @@
       --paper-tooltip-background: var(--cros-tooltip-background-color);
       --paper-tooltip-text-color: var(--cros-tooltip-label-color);
     }
+
+    cr-checkbox {
+      --cr-checkbox-ripple-opacity: 0;
+      --cr-checkbox-ripple-size: 32px;
+    }
+
+    :host-context(.focus-outline-visible) cr-checkbox:focus-within {
+      --cr-checkbox-ripple-ring: 2px solid var(--cros-focus-ring-color);
+    }
   </style>
 </template>
diff --git a/ash/webui/os_feedback_ui/resources/share_data_page.html b/ash/webui/os_feedback_ui/resources/share_data_page.html
index bbd9e34..999afc4 100644
--- a/ash/webui/os_feedback_ui/resources/share_data_page.html
+++ b/ash/webui/os_feedback_ui/resources/share_data_page.html
@@ -187,7 +187,7 @@
               disabled="[[!hasScreenshot_(screenshotUrl)]]">
           </cr-checkbox>
           <label id="screenshotCheckLabel">[[i18n('attachScreenshotLabel')]]</label>
-          <button id="imageButton" on-click="handleScreenshotClick_">
+          <button id="imageButton" class="focusable" on-click="handleScreenshotClick_">
             <img id="screenshotImage" src="[[screenshotUrl]]">
            </button>
         </div>
diff --git a/ash/wm/desks/desks_bar_view.cc b/ash/wm/desks/desks_bar_view.cc
index 4689c797..b37ddcd5 100644
--- a/ash/wm/desks/desks_bar_view.cc
+++ b/ash/wm/desks/desks_bar_view.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "ash/constants/ash_features.h"
+#include "ash/controls/gradient_layer_delegate.h"
 #include "ash/glanceables/glanceables_controller.h"
 #include "ash/keyboard/ui/keyboard_ui_controller.h"
 #include "ash/public/cpp/shell_window_ids.h"
@@ -441,6 +442,10 @@
   scroll_view_contents_->SetLayoutManager(
       std::make_unique<DesksBarScrollViewLayout>(this));
 
+  gradient_layer_delegate_ =
+      std::make_unique<GradientLayerDelegate>(/*animate_in=*/false);
+  scroll_view_->layer()->SetMaskLayer(gradient_layer_delegate_->layer());
+
   on_contents_scrolled_subscription_ =
       scroll_view_->AddContentsScrolledCallback(base::BindRepeating(
           &DesksBarView::OnContentsScrolled, base::Unretained(this)));
@@ -804,7 +809,7 @@
   scroll_view_->Layout();
 
   UpdateScrollButtonsVisibility();
-  UpdateGradientMask();
+  UpdateGradientZone();
 }
 
 bool DesksBarView::OnMousePressed(const ui::MouseEvent& event) {
@@ -1175,7 +1180,7 @@
                                    scroll_view_contents_->bounds().width());
 }
 
-void DesksBarView::UpdateGradientMask() {
+void DesksBarView::UpdateGradientZone() {
   const bool is_rtl = base::i18n::IsRTL();
   const bool is_left_scroll_button_visible = left_scroll_button_->GetVisible();
   const bool is_right_scroll_button_visible =
@@ -1205,29 +1210,35 @@
   // LTR or RTL layout. While the |left_scroll_button_| will be changed from
   // left to right and |right_scroll_button_| will be changed from right to left
   // if it is RTL layout.
-
-  // Horizontal linear gradient, from left to right.
-  gfx::LinearGradient gradient_mask(/*angle=*/0);
-
-  // Fraction of layer width that gradient will be applied to.
-  const float fade_position =
-      should_show_start_gradient || should_show_end_gradient
-          ? static_cast<float>(kGradientZoneLength) /
-                scroll_view_->bounds().width()
-          : 0;
-
-  // Left fade in section.
+  const gfx::Rect bounds = scroll_view_->bounds();
+  gfx::Rect start_gradient_bounds, end_gradient_bounds;
   if (should_show_start_gradient) {
-    gradient_mask.AddStep(/*fraction=*/0, /*alpha=*/0);
-    gradient_mask.AddStep(fade_position, 255);
+    start_gradient_bounds =
+        gfx::Rect(0, 0, kGradientZoneLength, bounds.height());
   }
-  // Right fade out section.
   if (should_show_end_gradient) {
-    gradient_mask.AddStep((1 - fade_position), 255);
-    gradient_mask.AddStep(1, 0);
+    end_gradient_bounds = gfx::Rect(bounds.width() - kGradientZoneLength, 0,
+                                    kGradientZoneLength, bounds.height());
   }
 
-  scroll_view_->layer()->SetGradientMask(gradient_mask);
+  // Return early if the gradients do not change.
+  if (start_gradient_bounds ==
+          gradient_layer_delegate_->start_fade_zone_bounds() &&
+      end_gradient_bounds == gradient_layer_delegate_->end_fade_zone_bounds()) {
+    return;
+  }
+
+  const GradientLayerDelegate::FadeZone start_gradient_zone = {
+      start_gradient_bounds,
+      /*fade_in=*/true,
+      /*is_horizontal=*/true};
+  const GradientLayerDelegate::FadeZone end_gradient_zone = {
+      end_gradient_bounds,
+      /*fade_in=*/false,
+      /*is_horizonal=*/true};
+  gradient_layer_delegate_->set_start_fade_zone(start_gradient_zone);
+  gradient_layer_delegate_->set_end_fade_zone(end_gradient_zone);
+  gradient_layer_delegate_->layer()->SetBounds(scroll_view_->layer()->bounds());
   scroll_view_->SchedulePaint();
 }
 
@@ -1305,7 +1316,7 @@
 
 void DesksBarView::OnContentsScrolled() {
   UpdateScrollButtonsVisibility();
-  UpdateGradientMask();
+  UpdateGradientZone();
 }
 
 void DesksBarView::OnContentsScrollEnded() {
@@ -1317,7 +1328,7 @@
     scroll_view_->ScrollToPosition(scroll_view_->horizontal_scroll_bar(),
                                    adjusted_position);
   }
-  UpdateGradientMask();
+  UpdateGradientZone();
 }
 
 void DesksBarView::NudgeDeskName(int desk_index) {
diff --git a/ash/wm/desks/desks_bar_view.h b/ash/wm/desks/desks_bar_view.h
index ca297355..72bb87fd 100644
--- a/ash/wm/desks/desks_bar_view.h
+++ b/ash/wm/desks/desks_bar_view.h
@@ -22,6 +22,7 @@
 class DeskDragProxy;
 class DeskMiniView;
 class ExpandedDesksBarButton;
+class GradientLayerDelegate;
 class NewDeskButton;
 class OverviewGrid;
 class PersistentDesksBarVerticalDotsButton;
@@ -244,7 +245,7 @@
   // We will show a fade in gradient besides |left_scroll_button_| and a fade
   // out gradient besides |right_scroll_button_|. Show the gradient only when
   // the corresponding scroll button is visible.
-  void UpdateGradientMask();
+  void UpdateGradientZone();
 
   // Scrolls the desks bar to the previous or next page. The page size is the
   // width of the scroll view, the contents that are outside of the scroll view
@@ -318,6 +319,10 @@
   // Drag proxy for the dragged desk.
   std::unique_ptr<DeskDragProxy> drag_proxy_;
 
+  // The layer delegate used for |scroll_view_|'s mask layer, with left and
+  // right gradient asides the scroll buttons.
+  std::unique_ptr<GradientLayerDelegate> gradient_layer_delegate_;
+
   // A circular button which when clicked will open the context menu of the
   // persistent desks bar. Note that this button will only be created when
   // persistent desks bar should be shown.
diff --git a/ash/wm/desks/desks_test_api.cc b/ash/wm/desks/desks_test_api.cc
index ddb0c7e2..a78f671d 100644
--- a/ash/wm/desks/desks_test_api.cc
+++ b/ash/wm/desks/desks_test_api.cc
@@ -4,6 +4,7 @@
 
 #include "ash/wm/desks/desks_test_api.h"
 
+#include "ash/controls/gradient_layer_delegate.h"
 #include "ash/shell.h"
 #include "ash/system/toast/toast_manager_impl.h"
 #include "ash/wm/desks/desk.h"
@@ -136,20 +137,16 @@
 
 // static
 bool DesksTestApi::IsDesksBarLeftGradientVisible() {
-  const auto& gradient_mask =
-      GetDesksBarView()->scroll_view_->layer()->gradient_mask();
-  return !gradient_mask.IsEmpty() &&
-         cc::MathUtil::IsWithinEpsilon(gradient_mask.steps()[0].fraction, 0.f);
+  return !GetDesksBarView()
+              ->gradient_layer_delegate_->start_fade_zone_bounds()
+              .IsEmpty();
 }
 
 // static
 bool DesksTestApi::IsDesksBarRightGradientVisible() {
-  const auto& gradient_mask =
-      GetDesksBarView()->scroll_view_->layer()->gradient_mask();
-  return !gradient_mask.IsEmpty() &&
-         cc::MathUtil::IsWithinEpsilon(
-             gradient_mask.steps()[gradient_mask.step_count() - 1].fraction,
-             1.f);
+  return !GetDesksBarView()
+              ->gradient_layer_delegate_->end_fade_zone_bounds()
+              .IsEmpty();
 }
 
 // static
diff --git a/ash/wm/overview/delayed_animation_observer_impl_unittest.cc b/ash/wm/overview/delayed_animation_observer_impl_unittest.cc
index 3a8ddeeb..2ab5dad8 100644
--- a/ash/wm/overview/delayed_animation_observer_impl_unittest.cc
+++ b/ash/wm/overview/delayed_animation_observer_impl_unittest.cc
@@ -104,7 +104,7 @@
     auto observer = std::make_unique<EnterAnimationObserver>();
     animation_settings.AddObserver(observer.get());
     delegate.AddEnterAnimationObserver(std::move(observer));
-    window->SetTransform(gfx::Transform(1.f, 0.f, 0.f, 1.f, 100.f, 0.f));
+    window->SetTransform(gfx::Transform::MakeTranslation(100.f, 0.f));
     EXPECT_EQ(0u, delegate.num_exit_observers());
     EXPECT_EQ(1u, delegate.num_enter_observers());
   }
@@ -131,7 +131,7 @@
     auto observer = std::make_unique<ExitAnimationObserver>();
     animation_settings.AddObserver(observer.get());
     delegate.AddExitAnimationObserver(std::move(observer));
-    window->SetTransform(gfx::Transform(1.f, 0.f, 0.f, 1.f, 100.f, 0.f));
+    window->SetTransform(gfx::Transform::MakeTranslation(100.f, 0.f));
     EXPECT_EQ(1u, delegate.num_exit_observers());
     EXPECT_EQ(0u, delegate.num_enter_observers());
   }
diff --git a/ash/wm/overview/scoped_overview_transform_window_unittest.cc b/ash/wm/overview/scoped_overview_transform_window_unittest.cc
index d71eb55..1929cf2b 100644
--- a/ash/wm/overview/scoped_overview_transform_window_unittest.cc
+++ b/ash/wm/overview/scoped_overview_transform_window_unittest.cc
@@ -261,7 +261,7 @@
   EXPECT_TRUE(child->IsVisible());
   EXPECT_FALSE(child2->IsVisible());
 
-  gfx::Transform transform(1.f, 0.f, 0.f, 1.f, 10.f, 10.f);
+  auto transform = gfx::Transform::MakeTranslation(10.f, 10.f);
   SetTransform(window.get(), transform);
   EXPECT_EQ(transform, window->transform());
   EXPECT_EQ(transform, child->transform());
diff --git a/ash/wm/window_mirror_view_unittest.cc b/ash/wm/window_mirror_view_unittest.cc
index 77c7cec..6de4e73 100644
--- a/ash/wm/window_mirror_view_unittest.cc
+++ b/ash/wm/window_mirror_view_unittest.cc
@@ -46,7 +46,7 @@
   // the transform will be copied with it.
   auto widget = CreateTestWidget();
   aura::Window* widget_window = widget->GetNativeWindow();
-  const gfx::Transform transform(1.f, 0.f, 0.f, 1.f, 100.f, 100.f);
+  const auto transform = gfx::Transform::MakeTranslation(100.f, 100.f);
   widget_window->SetTransform(transform);
 
   auto mirror_widget = CreateTestWidget();
diff --git a/base/containers/stack_container_unittest.cc b/base/containers/stack_container_unittest.cc
index af37120..68c6321 100644
--- a/base/containers/stack_container_unittest.cc
+++ b/base/containers/stack_container_unittest.cc
@@ -6,11 +6,10 @@
 
 #include <stddef.h>
 
-#include <algorithm>
-
 #include "base/memory/aligned_memory.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
+#include "base/ranges/algorithm.h"
 #include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -95,7 +94,7 @@
   dummy = nullptr;
   EXPECT_EQ(alive, 1);
 
-  auto itr = std::find(vect->begin(), vect->end(), dummy_unref);
+  auto itr = ranges::find(vect, dummy_unref);
   EXPECT_EQ(itr->get(), dummy_unref);
   vect->erase(itr);
   EXPECT_EQ(alive, 0);
diff --git a/base/cxx20_to_address.h b/base/cxx20_to_address.h
index 23b66e3..0010aec 100644
--- a/base/cxx20_to_address.h
+++ b/base/cxx20_to_address.h
@@ -30,7 +30,7 @@
 
 template <typename Ptr, typename... None>
 constexpr auto to_address(const Ptr& p, None...) noexcept {
-  return to_address(p.operator->());
+  return base::to_address(p.operator->());
 }
 
 }  // namespace base
diff --git a/base/files/file_path.cc b/base/files/file_path.cc
index 137c2965c..a43c093 100644
--- a/base/files/file_path.cc
+++ b/base/files/file_path.cc
@@ -5,6 +5,7 @@
 #include "base/files/file_path.h"
 
 #include <string.h>
+
 #include <algorithm>
 
 #include "base/check_op.h"
diff --git a/base/ios/crb_protocol_observers.mm b/base/ios/crb_protocol_observers.mm
index 0250e39..418e26bc 100644
--- a/base/ios/crb_protocol_observers.mm
+++ b/base/ios/crb_protocol_observers.mm
@@ -6,12 +6,13 @@
 
 #include <objc/runtime.h>
 #include <stddef.h>
-#include <algorithm>
+
 #include <vector>
 
 #include "base/check.h"
 #include "base/containers/contains.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -116,7 +117,7 @@
 
 - (void)removeObserver:(id)observer {
   DCHECK(observer);
-  auto it = std::find(_observers.begin(), _observers.end(), observer);
+  auto it = base::ranges::find(_observers, observer);
   if (it != _observers.end()) {
     if (_invocationDepth)
       *it = nil;
diff --git a/base/message_loop/message_pump_epoll.cc b/base/message_loop/message_pump_epoll.cc
index 351cc971..292dd03 100644
--- a/base/message_loop/message_pump_epoll.cc
+++ b/base/message_loop/message_pump_epoll.cc
@@ -7,7 +7,6 @@
 #include <sys/epoll.h>
 #include <sys/eventfd.h>
 
-#include <algorithm>
 #include <cstddef>
 #include <cstdint>
 #include <utility>
@@ -16,6 +15,7 @@
 #include "base/check_op.h"
 #include "base/memory/ref_counted.h"
 #include "base/posix/eintr_wrapper.h"
+#include "base/ranges/algorithm.h"
 #include "base/threading/thread_checker.h"
 #include "base/trace_event/base_tracing.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -182,7 +182,7 @@
 
   EpollEventEntry& entry = entry_it->second;
   auto& interests = entry.interests.container();
-  auto it = std::find(interests.begin(), interests.end(), interest);
+  auto it = ranges::find(interests, interest);
   DCHECK(it != interests.end());
   interests.erase(it);
 
diff --git a/base/metrics/user_metrics.cc b/base/metrics/user_metrics.cc
index 9511f66..ce4f834 100644
--- a/base/metrics/user_metrics.cc
+++ b/base/metrics/user_metrics.cc
@@ -11,6 +11,7 @@
 #include "base/bind.h"
 #include "base/lazy_instance.h"
 #include "base/location.h"
+#include "base/ranges/algorithm.h"
 #include "base/threading/thread_checker.h"
 #include "base/time/time.h"
 #include "base/trace_event/base_tracing.h"
@@ -68,7 +69,7 @@
   DCHECK(g_task_runner.Get());
   DCHECK(g_task_runner.Get()->BelongsToCurrentThread());
   std::vector<ActionCallback>* callbacks = g_callbacks.Pointer();
-  const auto i = std::find(callbacks->begin(), callbacks->end(), callback);
+  const auto i = ranges::find(*callbacks, callback);
   if (i != callbacks->end())
     callbacks->erase(i);
 }
diff --git a/base/path_service_unittest.cc b/base/path_service_unittest.cc
index 9a04f6c..3bbaf21 100644
--- a/base/path_service_unittest.cc
+++ b/base/path_service_unittest.cc
@@ -5,6 +5,7 @@
 #include "base/path_service.h"
 
 #include "base/base_paths.h"
+#include "base/containers/contains.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -135,12 +136,9 @@
   constexpr std::array<BasePathKey, 0> kUnsupportedKeys = {};
 #endif  // BUILDFLAG(IS_ANDROID)
   for (int key = PATH_START + 1; key < PATH_END; ++key) {
-    if (std::find(kUnsupportedKeys.begin(), kUnsupportedKeys.end(), key) ==
-        kUnsupportedKeys.end()) {
-      EXPECT_PRED1(ReturnsValidPath, key);
-    } else {
-      EXPECT_PRED1(ReturnsInvalidPath, key);
-    }
+    EXPECT_PRED1(Contains(kUnsupportedKeys, key) ? &ReturnsInvalidPath
+                                                 : &ReturnsValidPath,
+                 key);
   }
 #if BUILDFLAG(IS_WIN)
   for (int key = PATH_WIN_START + 1; key < PATH_WIN_END; ++key) {
diff --git a/base/task/task_features.cc b/base/task/task_features.cc
index ac809e1..d12481f 100644
--- a/base/task/task_features.cc
+++ b/base/task/task_features.cc
@@ -6,7 +6,6 @@
 
 #include "base/base_export.h"
 #include "base/feature_list.h"
-#include "build/build_config.h"
 
 namespace base {
 
@@ -43,16 +42,7 @@
 const base::FeatureParam<TimeDelta> kTaskLeewayParam{&kAddTaskLeewayFeature,
                                                      "leeway", kDefaultLeeway};
 
-BASE_FEATURE(kAlignWakeUps,
-             "AlignWakeUps",
-#if BUILDFLAG(IS_FUCHSIA)
-             // TODO(crbug.com/1368989): Ensure that latency-sensitive
-             // activities (e.g. media playback) are compatible, and enable.
-             base::FEATURE_DISABLED_BY_DEFAULT
-#else
-             base::FEATURE_ENABLED_BY_DEFAULT
-#endif
-);
+BASE_FEATURE(kAlignWakeUps, "AlignWakeUps", base::FEATURE_ENABLED_BY_DEFAULT);
 
 BASE_FEATURE(kExplicitHighResolutionTimerWin,
              "ExplicitHighResolutionTimerWin",
diff --git a/build/fuchsia/test/ffx_integration.py b/build/fuchsia/test/ffx_integration.py
index e5dc16d..44dbd51 100644
--- a/build/fuchsia/test/ffx_integration.py
+++ b/build/fuchsia/test/ffx_integration.py
@@ -280,8 +280,8 @@
             A subprocess.Popen object.
         """
         command = [
-            '--config', 'test.experimental_structured_output=false', 'test',
-            'run', '--output-directory', self._results_dir, component_uri
+            'test', 'run', '--output-directory', self._results_dir,
+            component_uri
         ]
         if test_args:
             command.append('--')
diff --git a/build/fuchsia/test/run_telemetry_test.py b/build/fuchsia/test/run_telemetry_test.py
index a756a433..48caea27 100644
--- a/build/fuchsia/test/run_telemetry_test.py
+++ b/build/fuchsia/test/run_telemetry_test.py
@@ -56,5 +56,6 @@
         if self._test_args:
             test_cmd.extend(self._test_args)
         test_cmd.extend(['--chromium-output-directory', self._out_dir])
-        test_cmd.extend(['--fuchsia-target-id', self._target_id])
+        if self._target_id:
+            test_cmd.extend(['--fuchsia-target-id', self._target_id])
         return subprocess.run(test_cmd, check=True)
diff --git a/build/fuchsia/test/run_test.py b/build/fuchsia/test/run_test.py
index 41f0ccf..598a3589 100755
--- a/build/fuchsia/test/run_test.py
+++ b/build/fuchsia/test/run_test.py
@@ -47,8 +47,8 @@
     parser = argparse.ArgumentParser()
     parser.add_argument(
         'test_type',
-        help='The type of test to run. Options include \'blink\', \'gpu\''
-        'or in the case of gtests, the gtest name.')
+        help='The type of test to run. Options include \'blink\', \'gpu\', '
+        'or in the case of executable tests, the test name.')
     parser.add_argument('--device',
                         '-d',
                         action='store_true',
diff --git a/build/fuchsia/test/test_server.py b/build/fuchsia/test/test_server.py
index fe3c6cc2..c2ed3d2 100644
--- a/build/fuchsia/test/test_server.py
+++ b/build/fuchsia/test/test_server.py
@@ -8,7 +8,7 @@
 import sys
 import subprocess
 
-from typing import List, Tuple
+from typing import List, Optional, Tuple
 
 from common import DIR_SRC_ROOT, run_ffx_command
 from compatible_utils import get_ssh_prefix
@@ -96,7 +96,7 @@
 # pylint: enable=invalid-name,missing-function-docstring
 
 
-def setup_test_server(target_id: str, test_concurrency: int)\
+def setup_test_server(target_id: Optional[str], test_concurrency: int)\
          -> Tuple[chrome_test_server_spawner.SpawningServer, str]:
     """Provisions a test server and configures |target_id| to use it.
 
diff --git a/buildtools/deps_revisions.gni b/buildtools/deps_revisions.gni
index 9dbde60..b653cd6 100644
--- a/buildtools/deps_revisions.gni
+++ b/buildtools/deps_revisions.gni
@@ -5,5 +5,5 @@
 declare_args() {
   # Used to cause full rebuilds on libc++ rolls. This should be kept in sync
   # with the libcxx_revision vars in //DEPS.
-  libcxx_revision = "11bdb46a42a9947797fb273821769a59fa2becbb"
+  libcxx_revision = "5ee02b299379896f90faa88f576be98c61156f26"
 }
diff --git a/cc/base/features.cc b/cc/base/features.cc
index de1592c..5ac878de 100644
--- a/cc/base/features.cc
+++ b/cc/base/features.cc
@@ -42,7 +42,7 @@
 
 BASE_FEATURE(kScrollUnification,
              "ScrollUnification",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 BASE_FEATURE(kSchedulerSmoothnessForAnimatedScrolls,
              "SmoothnessModeForAnimatedScrolls",
diff --git a/cc/base/math_util_unittest.cc b/cc/base/math_util_unittest.cc
index f8808a2dd..7bfd0b2a 100644
--- a/cc/base/math_util_unittest.cc
+++ b/cc/base/math_util_unittest.cc
@@ -984,7 +984,7 @@
 
 TEST(MathUtilTest, MapClippedQuadInfiniteMatrix) {
   // clang-format off
-  gfx::Transform transform(
+  auto transform = gfx::Transform::RowMajor(
       1.0f, 0.0f, 0.0f, 0.0f,
       0.0f, -100.0f, 0.0f, std::numeric_limits<float>::infinity(),
       0.0f, 0.0f, 1.0f, 0.0f,
diff --git a/cc/layers/layer_impl_unittest.cc b/cc/layers/layer_impl_unittest.cc
index c3e22cf..0e12a04 100644
--- a/cc/layers/layer_impl_unittest.cc
+++ b/cc/layers/layer_impl_unittest.cc
@@ -286,10 +286,11 @@
   }
   // Test case from crbug.com/766021.
   {
-    gfx::Transform transform(-0.9397f, -0.7019f, 0.2796f, 2383.4521f,   // row 1
-                             -0.0038f, 0.0785f, 1.0613f, 1876.4553f,    // row 2
-                             -0.0835f, 0.9081f, -0.4105f, -2208.3035f,  // row 3
-                             0.0001f, -0.0008f, 0.0003f, 2.8435f);      // row 4
+    auto transform = gfx::Transform::RowMajor(
+        -0.9397f, -0.7019f, 0.2796f, 2383.4521f,   // row 1
+        -0.0038f, 0.0785f, 1.0613f, 1876.4553f,    // row 2
+        -0.0835f, 0.9081f, -0.4105f, -2208.3035f,  // row 3
+        0.0001f, -0.0008f, 0.0003f, 2.8435f);      // row 4
     layer->draw_properties().screen_space_transform = transform;
 
     ASSERT_TRUE(layer->ScreenSpaceTransform().HasPerspective());
diff --git a/cc/layers/layer_unittest.cc b/cc/layers/layer_unittest.cc
index 7973b9c..bdb36e3a 100644
--- a/cc/layers/layer_unittest.cc
+++ b/cc/layers/layer_unittest.cc
@@ -1047,8 +1047,8 @@
       test_layer->SetScrollOffset(gfx::PointF(10, 10)));
   EXPECT_SET_NEEDS_COMMIT_WAS_CALLED(
       test_layer->SetNonFastScrollableRegion(Region(gfx::Rect(1, 1, 2, 2))));
-  EXPECT_SET_NEEDS_COMMIT_WAS_CALLED(
-      test_layer->SetTransform(gfx::Transform(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)));
+  EXPECT_SET_NEEDS_COMMIT_WAS_CALLED(test_layer->SetTransform(
+      gfx::Transform::Affine(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)));
   TouchActionRegion touch_action_region;
   touch_action_region.Union(TouchAction::kNone, gfx::Rect(10, 10));
   EXPECT_SET_NEEDS_COMMIT_WAS_CALLED(
diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
index 4bbab69..9859e46 100644
--- a/cc/layers/picture_layer.cc
+++ b/cc/layers/picture_layer.cc
@@ -266,8 +266,8 @@
             &inverse_outer_screen_space_transform)) {
       return;
     }
-    gfx::Transform combined_transform{ScreenSpaceTransform(),
-                                      inverse_outer_screen_space_transform};
+    gfx::Transform combined_transform =
+        ScreenSpaceTransform() * inverse_outer_screen_space_transform;
     for (auto& i : *content) {
       i.visual_rect = MathUtil::ProjectEnclosingClippedRect(combined_transform,
                                                             i.visual_rect);
diff --git a/cc/trees/draw_properties_unittest.cc b/cc/trees/draw_properties_unittest.cc
index 1e63f37..3404f6b 100644
--- a/cc/trees/draw_properties_unittest.cc
+++ b/cc/trees/draw_properties_unittest.cc
@@ -2374,7 +2374,8 @@
   child->SetDrawsContent(true);
 
   // Case 1: a truly degenerate matrix
-  gfx::Transform uninvertible_matrix(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+  auto uninvertible_matrix =
+      gfx::Transform::Affine(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
   ASSERT_FALSE(uninvertible_matrix.IsInvertible());
 
   CopyProperties(root, child);
@@ -2459,7 +2460,8 @@
   child->SetBounds(gfx::Size(50, 50));
   child->SetDrawsContent(true);
 
-  gfx::Transform uninvertible_matrix(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+  auto uninvertible_matrix =
+      gfx::Transform::Affine(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
   ASSERT_FALSE(uninvertible_matrix.IsInvertible());
 
   CopyProperties(root, child);
diff --git a/cc/trees/draw_property_utils.cc b/cc/trees/draw_property_utils.cc
index a97f92c..0204347e 100644
--- a/cc/trees/draw_property_utils.cc
+++ b/cc/trees/draw_property_utils.cc
@@ -602,8 +602,9 @@
 template <typename LayerType>
 gfx::Transform ScreenSpaceTransformInternal(LayerType* layer,
                                             const TransformTree& tree) {
-  gfx::Transform xform(1, 0, 0, 1, layer->offset_to_transform_parent().x(),
-                       layer->offset_to_transform_parent().y());
+  gfx::Transform xform =
+      gfx::Transform::MakeTranslation(layer->offset_to_transform_parent().x(),
+                                      layer->offset_to_transform_parent().y());
   gfx::Transform ssxform = tree.ToScreen(layer->transform_tree_index());
   xform.ConcatTransform(ssxform);
   return xform;
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index 3677b99..0218c8e3 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -4307,7 +4307,7 @@
     LayerTreeHostTest::SetupTree();
 
     scoped_refptr<Layer> layer = PictureLayer::Create(&client_);
-    layer->SetTransform(gfx::Transform(0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
+    layer->SetTransform(gfx::Transform::Affine(0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
     layer->SetBounds(gfx::Size(10, 10));
     layer_tree_host()->root_layer()->AddChild(layer);
     client_.set_bounds(layer->bounds());
diff --git a/cc/trees/occlusion_tracker.cc b/cc/trees/occlusion_tracker.cc
index e3c3c2a2..fdb210cf 100644
--- a/cc/trees/occlusion_tracker.cc
+++ b/cc/trees/occlusion_tracker.cc
@@ -166,9 +166,9 @@
   }
 
   size_t last_index = stack_.size() - 1;
-  gfx::Transform old_target_to_new_target_transform(
-      inverse_new_target_screen_space_transform,
-      old_target_surface->screen_space_transform());
+  gfx::Transform old_target_to_new_target_transform =
+      inverse_new_target_screen_space_transform *
+      old_target_surface->screen_space_transform();
   stack_[last_index].occlusion_from_outside_target =
       TransformSurfaceOpaqueRegion(
           stack_[last_index - 1].occlusion_from_outside_target, false,
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index f38a246..3dd0e67 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -1529,8 +1529,8 @@
   const TransformTree& transform_tree = property_trees()->transform_tree();
   const TransformNode* transform_node =
       transform_tree.Node(scroll_node->transform_id);
-  gfx::Transform screen_space_transform(
-      1, 0, 0, 1, scroll_node->offset_to_transform_parent.x(),
+  gfx::Transform screen_space_transform = gfx::Transform::MakeTranslation(
+      scroll_node->offset_to_transform_parent.x(),
       scroll_node->offset_to_transform_parent.y());
   screen_space_transform.ConcatTransform(
       transform_tree.ToScreen(transform_node->id));
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
index d72b0c7..dc5e2fe 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceConfiguration.java
@@ -28,9 +28,6 @@
     public static final StringCachedFieldTrialParameter START_SURFACE_VARIATION =
             new StringCachedFieldTrialParameter(
                     ChromeFeatureList.START_SURFACE_ANDROID, "start_surface_variation", "single");
-    public static final BooleanCachedFieldTrialParameter START_SURFACE_EXCLUDE_MV_TILES =
-            new BooleanCachedFieldTrialParameter(
-                    ChromeFeatureList.START_SURFACE_ANDROID, "exclude_mv_tiles", false);
     public static final BooleanCachedFieldTrialParameter
             START_SURFACE_HIDE_INCOGNITO_SWITCH_NO_TAB =
                     new BooleanCachedFieldTrialParameter(ChromeFeatureList.START_SURFACE_ANDROID,
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
index 3729541..4835322 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
@@ -271,8 +271,6 @@
         mCrowButtonDelegate = crowButtonDelegate;
 
         mTabSwitcherCustomViewManagerSupplier = new OneshotSupplierImpl<>();
-        boolean excludeMVTiles = StartSurfaceConfiguration.START_SURFACE_EXCLUDE_MV_TILES.getValue()
-                || !mIsStartSurfaceEnabled;
         boolean excludeQueryTiles = !mIsStartSurfaceEnabled
                 || !CachedFeatureFlags.isEnabled(ChromeFeatureList.QUERY_TILES_ON_START);
         if (!mIsStartSurfaceEnabled) {
@@ -288,7 +286,7 @@
         } else {
             // createSwipeRefreshLayout has to be called before creating any surface.
             createSwipeRefreshLayout();
-            createAndSetStartSurface(excludeMVTiles, excludeQueryTiles);
+            createAndSetStartSurface(excludeQueryTiles);
         }
 
         TabSwitcher.Controller controller =
@@ -304,7 +302,7 @@
                 mTabModelSelector, mPropertyModel,
                 mIsStartSurfaceEnabled ? this::initializeSecondaryTasksSurface : null,
                 mIsStartSurfaceEnabled, mActivity, mBrowserControlsManager,
-                this::isActivityFinishingOrDestroyed, excludeMVTiles, excludeQueryTiles,
+                this::isActivityFinishingOrDestroyed, excludeQueryTiles,
                 startSurfaceOneshotSupplier, hadWarmStart, jankTracker, initializeMVTilesRunnable,
                 mParentTabSupplier, logoContainerView, backPressManager, feedPlaceholderParentView);
 
@@ -673,20 +671,24 @@
         return mTasksSurface.isMVTilesInitialized();
     }
 
-    private void createAndSetStartSurface(boolean excludeMVTiles, boolean excludeQueryTiles) {
+    /**
+     * Called only when Start Surface is enabled.
+     */
+    private void createAndSetStartSurface(boolean excludeQueryTiles) {
         ArrayList<PropertyKey> allProperties =
                 new ArrayList<>(Arrays.asList(TasksSurfaceProperties.ALL_KEYS));
         allProperties.addAll(Arrays.asList(StartSurfaceProperties.ALL_KEYS));
         mPropertyModel = new PropertyModel(allProperties);
 
+        assert mIsStartSurfaceEnabled;
+
         int tabSwitcherType =
-                mIsStartSurfaceEnabled ? TabSwitcherType.CAROUSEL : TabSwitcherType.GRID;
-        if (StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue()) {
-            tabSwitcherType = TabSwitcherType.SINGLE;
-        }
+                StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY.getValue()
+                ? TabSwitcherType.SINGLE
+                : TabSwitcherType.CAROUSEL;
         mTasksSurface = createTasksSurface(mActivity, mScrimCoordinator, mPropertyModel,
-                tabSwitcherType, mParentTabSupplier, !excludeMVTiles, !excludeQueryTiles,
-                mWindowAndroid, mActivityLifecycleDispatcher, mTabModelSelector, mSnackbarManager,
+                tabSwitcherType, mParentTabSupplier, true, !excludeQueryTiles, mWindowAndroid,
+                mActivityLifecycleDispatcher, mTabModelSelector, mSnackbarManager,
                 mDynamicResourceLoaderSupplier, mTabContentManager, mModalDialogManager,
                 mBrowserControlsManager, mTabCreatorManager, mMenuOrKeyboardActionController,
                 mShareDelegateSupplier, mMultiWindowModeStateDispatcher, mContainerView);
diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
index 9674c04..601a68d 100644
--- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
@@ -116,7 +116,6 @@
     private final boolean mIsStartSurfaceEnabled;
     private final ObserverList<StartSurface.StateObserver> mStateObservers = new ObserverList<>();
     private final boolean mHadWarmStart;
-    private final boolean mExcludeMVTiles;
     private final boolean mExcludeQueryTiles;
     private final Runnable mInitializeMVTilesRunnable;
     private final Supplier<Tab> mParentTabSupplier;
@@ -195,9 +194,9 @@
             @Nullable SecondaryTasksSurfaceInitializer secondaryTasksSurfaceInitializer,
             boolean isStartSurfaceEnabled, Context context,
             BrowserControlsStateProvider browserControlsStateProvider,
-            ActivityStateChecker activityStateChecker, boolean excludeMVTiles,
-            boolean excludeQueryTiles, OneshotSupplier<StartSurface> startSurfaceSupplier,
-            boolean hadWarmStart, JankTracker jankTracker, Runnable initializeMVTilesRunnable,
+            ActivityStateChecker activityStateChecker, boolean excludeQueryTiles,
+            OneshotSupplier<StartSurface> startSurfaceSupplier, boolean hadWarmStart,
+            JankTracker jankTracker, Runnable initializeMVTilesRunnable,
             Supplier<Tab> parentTabSupplier, View logoContainerView,
             BackPressManager backPressManager, ViewGroup feedPlaceholderParentView) {
         mController = controller;
@@ -209,7 +208,6 @@
         mContext = context;
         mBrowserControlsStateProvider = browserControlsStateProvider;
         mActivityStateChecker = activityStateChecker;
-        mExcludeMVTiles = excludeMVTiles;
         mExcludeQueryTiles = excludeQueryTiles;
         mStartSurfaceSupplier = startSurfaceSupplier;
         mHadWarmStart = hadWarmStart;
@@ -1123,7 +1121,7 @@
     }
 
     private void setMVTilesVisibility(boolean isVisible) {
-        if (mExcludeMVTiles) return;
+        if (mInitializeMVTilesRunnable == null) return;
         if (isVisible && mInitializeMVTilesRunnable != null) mInitializeMVTilesRunnable.run();
         mPropertyModel.set(MV_TILES_VISIBLE, isVisible);
     }
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
index b16861b..510d62d 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/InstantStartTest.java
@@ -28,7 +28,6 @@
 import androidx.test.filters.MediumTest;
 import androidx.test.filters.SmallTest;
 
-import org.hamcrest.core.AllOf;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -304,46 +303,6 @@
 
     @Test
     @SmallTest
-    @Feature({"RenderTest"})
-    // clang-format off
-    @EnableFeatures({ChromeFeatureList.TAB_SWITCHER_ON_RETURN + "<Study,",
-        ChromeFeatureList.START_SURFACE_ANDROID + "<Study"})
-    @CommandLineFlags.Add({ChromeSwitches.DISABLE_NATIVE_INITIALIZATION,
-        // Disable feed placeholder animation because we can't render it in exactly the same way
-        // for each run.
-        FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH,
-            INSTANT_START_TEST_BASE_PARAMS +
-            "/exclude_mv_tiles/true" +
-            "/hide_switch_when_no_incognito_tabs/true" +
-            "/show_last_active_tab_only/true"})
-    public void renderSingleAsHomepage_SingleTabNoMVTiles()
-        throws IOException {
-        // clang-format on
-
-        StartSurfaceTestUtils.createTabStateFile(new int[] {0});
-        StartSurfaceTestUtils.createThumbnailBitmapAndWriteToFile(0);
-        TabAttributeCache.setTitleForTesting(0, "Google");
-
-        StartSurfaceTestUtils.startMainActivityFromLauncher(mActivityTestRule);
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(cta);
-
-        View surface = cta.findViewById(R.id.primary_tasks_surface_view);
-
-        ViewUtils.onViewWaiting(AllOf.allOf(withId(R.id.single_tab_view), isDisplayed()));
-        ChromeRenderTestRule.sanitize(surface);
-        // TODO(crbug.com/1065314): fix favicon.
-        mRenderTestRule.render(surface, "singlePane_singleTab_noMV4_FeedV2");
-
-        // Initializes native.
-        StartSurfaceTestUtils.startAndWaitNativeInitialization(mActivityTestRule);
-
-        // TODO(crbug.com/1065314): fix login button animation in post-native rendering and
-        //  make sure post-native single-tab card looks the same.
-    }
-
-    @Test
-    @SmallTest
     @DisableFeatures(ChromeFeatureList.START_SURFACE_ANDROID)
     public void testInstantStartWithoutStartSurface() throws IOException {
         StartSurfaceTestUtils.createTabStateFile(new int[] {123});
@@ -471,7 +430,7 @@
             // Disable feed placeholder animation because we can't render it in exactly the same
             // way for each run.
             FeedPlaceholderLayout.DISABLE_ANIMATION_SWITCH,
-            INSTANT_START_TEST_BASE_PARAMS + "/exclude_mv_tiles/false"})
+            INSTANT_START_TEST_BASE_PARAMS})
     public void testMVTilesWithExploreSitesView() throws InterruptedException, IOException {
         // clang-format on
         FakeMostVisitedSites mostVisitedSites = StartSurfaceTestUtils.setMVTiles(mSuggestionsDeps);
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java
index 6cf58e1d..e472985 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceNoTabsTest.java
@@ -140,7 +140,6 @@
     @MediumTest
     @Feature({"StartSurface"})
     // clang-format off
-    @CommandLineFlags.Add({BASE_PARAMS + "exclude_mv_tiles/true"})
     @DisabledTest(message = "https://crbug.com/1263910")
     public void testShow_SingleAsHomepage_SingleTabSwitcher_NoTabs() {
         // clang-format on
@@ -152,7 +151,7 @@
 
         onView(withId(R.id.primary_tasks_surface_view)).check(matches(isDisplayed()));
         onView(withId(R.id.search_box_text)).check(matches(isDisplayed()));
-        onView(withId(R.id.mv_tiles_container)).check(matches(withEffectiveVisibility(GONE)));
+        onView(withId(R.id.mv_tiles_container)).check(matches(isDisplayed()));
         onView(withId(R.id.tab_switcher_title)).check(matches(withEffectiveVisibility(GONE)));
         onView(withId(R.id.carousel_tab_switcher_container))
                 .check(matches(withEffectiveVisibility(GONE)));
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
index 3727214e..d71fa60 100644
--- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
+++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -258,58 +258,10 @@
     @Test
     @LargeTest
     @Feature({"StartSurface"})
-    @CommandLineFlags.
-    Add({START_SURFACE_TEST_BASE_PARAMS + "exclude_mv_tiles/true/show_last_active_tab_only/false"
-            + "/open_ntp_instead_of_start/false/tab_count_button_on_start_surface/false"
-            + "/open_start_as_homepage/true"})
-    // clang-format off
-    public void testShow_SingleAsHomepage_NoMVTiles() {
-        // clang-format on
-        if (!mImmediateReturn) {
-            StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
-        }
-        ChromeTabbedActivity cta = mActivityTestRule.getActivity();
-        StartSurfaceTestUtils.waitForOverviewVisible(
-                mLayoutChangedCallbackHelper, mCurrentlyActiveLayout, cta);
-
-        onViewWaiting(withId(R.id.primary_tasks_surface_view));
-        onViewWaiting(withId(R.id.search_box_text));
-        onView(withId(R.id.mv_tiles_container)).check(matches(withEffectiveVisibility(GONE)));
-        onView(withId(R.id.tab_switcher_title)).check(matches(isDisplayed()));
-        onView(withId(R.id.carousel_tab_switcher_container)).check(matches(isDisplayed()));
-        onView(withId(R.id.tasks_surface_body)).check(matches(isDisplayed()));
-
-        if (!isInstantReturn()) {
-            // TODO(crbug.com/1076274): fix toolbar to make incognito switch part of the view.
-            onView(withId(R.id.incognito_toggle_tabs))
-                    .check(matches(withEffectiveVisibility(GONE)));
-        }
-
-        StartSurfaceTestUtils.clickMoreTabs(cta);
-        onViewWaiting(withId(R.id.secondary_tasks_surface_view));
-
-        StartSurfaceTestUtils.pressBack(mActivityTestRule);
-        onViewWaiting(withId(R.id.primary_tasks_surface_view));
-
-        if (isInstantReturn()
-                && (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
-                        && Build.VERSION.SDK_INT < Build.VERSION_CODES.O)) {
-            // TODO(crbug.com/1092642): Fix androidx.test.espresso.PerformException issue when
-            // performing a single click on position: 0. See code below.
-            return;
-        }
-
-        StartSurfaceTestUtils.clickFirstTabInCarousel();
-        LayoutTestUtils.waitForLayout(cta.getLayoutManager(), LayoutType.BROWSING);
-    }
-
-    @Test
-    @LargeTest
-    @Feature({"StartSurface"})
     @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS
-            + "exclude_mv_tiles/true/open_ntp_instead_of_start/false/open_start_as_homepage/true"})
+            + "open_ntp_instead_of_start/false/open_start_as_homepage/true"})
     // clang-format off
-    public void testShow_SingleAsHomepage_SingleTabNoMVTiles() {
+    public void testShow_SingleAsHomepage_SingleTab() {
         // clang-format on
         Assume.assumeFalse("https://crbug.com/1205642, https://crbug.com/1214303",
                 !mUseInstantStart && mImmediateReturn && VERSION.SDK_INT == VERSION_CODES.M);
@@ -322,7 +274,7 @@
 
         onViewWaiting(withId(R.id.primary_tasks_surface_view));
         onViewWaiting(withId(R.id.search_box_text));
-        onView(withId(R.id.mv_tiles_container)).check(matches(withEffectiveVisibility(GONE)));
+        onView(withId(R.id.mv_tiles_container)).check(matches(isDisplayed()));
         onView(withId(R.id.tab_switcher_title)).check(matches(withEffectiveVisibility(GONE)));
         onView(withId(R.id.carousel_tab_switcher_container)).check(matches(isDisplayed()));
         onView(withId(R.id.single_tab_view)).check(matches(isDisplayed()));
diff --git a/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java b/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
index d3f85076..54058f9 100644
--- a/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
+++ b/chrome/android/features/start_surface/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
@@ -263,7 +263,7 @@
         doReturn(false).when(mTabModelSelector).isIncognitoSelected();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ false, true);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ false);
         verify(mTabModelSelector, never()).addObserver(mTabModelSelectorObserverCaptor.capture());
         verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
@@ -290,7 +290,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
 
@@ -336,59 +336,6 @@
         // TODO(crbug.com/1020223): Test the other SurfaceMode.SINGLE_PANE operations.
     }
 
-    @Test
-    public void showAndHideSingleSurfaceWithoutMVTiles() {
-        doReturn(false).when(mTabModelSelector).isIncognitoSelected();
-        doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
-        doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
-
-        StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, true);
-        verify(mMainTabGridController)
-                .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
-
-        assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
-        // Sets the current StartSurfaceState to SHOWING_START before calling the
-        // {@link StartSurfaceMediator#showOverview()}. This is because if the current
-        // StartSurfaceState is NOT_SHOWN, the state will be set default to SHOWING_TABSWITCHER in
-        // {@link StartSurfaceMediator#showOverview()}.
-        mediator.setStartSurfaceState(StartSurfaceState.SHOWING_START);
-
-        mediator.showOverview(false);
-        verify(mMainTabGridController).showTabSwitcherView(eq(false));
-        verify(mOmniboxStub, times(2))
-                .addUrlFocusChangeListener(mUrlFocusChangeListenerCaptor.capture());
-        assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.SHOWN_HOMEPAGE));
-        assertThat(mPropertyModel.get(IS_INCOGNITO), equalTo(false));
-        assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(MV_TILES_VISIBLE), equalTo(false));
-        assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
-
-        mTabSwitcherVisibilityObserverCaptor.getValue().startedShowing();
-        mTabSwitcherVisibilityObserverCaptor.getValue().finishedShowing();
-
-        UrlFocusChangeListener urlFocusChangeListener =
-                mUrlFocusChangeListenerCaptor.getAllValues().get(1);
-
-        urlFocusChangeListener.onUrlFocusChange(true);
-        assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(false));
-        urlFocusChangeListener.onUrlFocusChange(false);
-        assertThat(mPropertyModel.get(IS_FAKE_SEARCH_BOX_VISIBLE), equalTo(true));
-        assertThat(mPropertyModel.get(IS_VOICE_RECOGNITION_BUTTON_VISIBLE), equalTo(true));
-
-        mediator.hideTabSwitcherView(true);
-        verify(mMainTabGridController).hideTabSwitcherView(eq(true));
-
-        mTabSwitcherVisibilityObserverCaptor.getValue().startedHiding();
-        assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(false));
-        verify(mOmniboxStub).removeUrlFocusChangeListener(urlFocusChangeListener);
-
-        mTabSwitcherVisibilityObserverCaptor.getValue().finishedHiding();
-
-        // TODO(crbug.com/1020223): Test the other SurfaceMode.SINGLE_PANE operations.
-    }
-
     // TODO(crbug.com/1020223): Test SurfaceMode.SINGLE_PANE and SurfaceMode.TWO_PANES modes.
     @Test
     public void hideTabCarouselWithNoTabs() {
@@ -397,7 +344,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         doReturn(0).when(mNormalTabModel).getCount();
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
@@ -416,7 +363,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         doReturn(2).when(mNormalTabModel).getCount();
         doReturn(true).when(mTabModelSelector).isTabStateInitialized();
@@ -447,7 +394,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         doReturn(1).when(mNormalTabModel).getCount();
 
@@ -487,7 +434,7 @@
 
         mTabModels.clear();
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
 
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
@@ -506,7 +453,7 @@
 
         mTabModels.clear();
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
 
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
@@ -534,7 +481,7 @@
 
         mTabModels.clear();
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
 
         mTabModels.add(mNormalTabModel);
@@ -561,7 +508,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mNormalTabModel, never()).addObserver(mTabModelObserverCaptor.capture());
 
         mediator.setStartSurfaceState(StartSurfaceState.SHOWING_HOMEPAGE);
@@ -579,7 +526,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         verify(mTabModelSelector, never()).addObserver(mTabModelSelectorObserverCaptor.capture());
 
@@ -598,7 +545,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
 
         doReturn(2).when(mNormalTabModel).getCount();
@@ -650,7 +597,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
 
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
@@ -683,7 +630,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
 
@@ -727,7 +674,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
 
         doReturn(2).when(mNormalTabModel).getCount();
@@ -783,7 +730,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
 
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
@@ -819,7 +766,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
@@ -858,7 +805,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         mediator.setStartSurfaceState(StartSurfaceState.SHOWING_HOMEPAGE);
         mediator.showOverview(false);
         verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
@@ -896,7 +843,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
         mediator.showOverview(false);
         verify(mTabModelSelector).addObserver(mTabModelSelectorObserverCaptor.capture());
@@ -934,7 +881,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
 
@@ -977,7 +924,7 @@
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         String instanceState = "state";
         StartSurfaceUserData.getInstance().saveFeedInstanceState(instanceState);
@@ -995,7 +942,7 @@
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         String instanceState = "state";
         StartSurfaceUserData.getInstance().saveFeedInstanceState(instanceState);
@@ -1014,7 +961,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
 
@@ -1030,7 +977,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
 
@@ -1071,7 +1018,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         InOrder mainTabGridController = inOrder(mMainTabGridController);
         mainTabGridController.verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
@@ -1127,7 +1074,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         InOrder mainTabGridController = inOrder(mMainTabGridController);
         mainTabGridController.verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
@@ -1172,7 +1119,7 @@
                 .when(mBrowserControlsStateProvider)
                 .addObserver(mBrowserControlsStateProviderCaptor.capture());
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         // The top margin of homepage should be consistent with top controls min height/offset
         // (indicator height).
@@ -1218,7 +1165,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator = createStartSurfaceMediatorWithoutInit(
-                /* isStartSurfaceEnabled= */ true, /* excludeMVTiles= */ false,
+                /* isStartSurfaceEnabled= */ true,
                 /* hadWarmStart= */ false);
         verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
@@ -1254,7 +1201,6 @@
                 resources.getDimensionPixelSize(R.dimen.tab_switcher_title_top_margin);
 
         createStartSurfaceMediatorWithoutInit(/* isStartSurfaceEnabled= */ true,
-                /* excludeMVTiles= */ false,
                 /* hadWarmStart= */ false);
         assertThat(mPropertyModel.get(TASKS_SURFACE_BODY_TOP_MARGIN),
                 equalTo(tasksSurfaceBodyTopMargin));
@@ -1272,7 +1218,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator = createStartSurfaceMediator(
-                /* isStartSurfaceEnabled= */ true, /* excludeMVTiles= */ false,
+                /* isStartSurfaceEnabled= */ true,
                 /* hadWarmStart= */ true);
         assertFalse(mediator.shouldShowFeedPlaceholder());
 
@@ -1294,7 +1240,7 @@
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         mediator.setSecondaryTasksSurfaceController(mSecondaryTasksSurfaceController);
         assertThat(mediator.getStartSurfaceState(), equalTo(StartSurfaceState.NOT_SHOWN));
@@ -1317,7 +1263,7 @@
         doReturn(TabSwitcherType.SINGLE).when(mMainTabGridController).getTabSwitcherType();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         doReturn(2).when(mNormalTabModel).getCount();
         doReturn(true).when(mTabModelSelector).isTabStateInitialized();
@@ -1344,7 +1290,7 @@
         when(mTabModelSelector.getCurrentTab()).thenReturn(regularTab);
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
 
         mediator.setStartSurfaceState(StartSurfaceState.SHOWING_HOMEPAGE);
         mediator.showOverview(false);
@@ -1364,7 +1310,7 @@
         doReturn(true).when(mTabModelSelector).isTabStateInitialized();
 
         StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true, false);
+                createStartSurfaceMediator(/* isStartSurfaceEnabled= */ true);
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
         verify(mInitializeMVTilesRunnable).run();
     }
@@ -1414,8 +1360,7 @@
     public void testFeedReliabilityLoggerPageLoadStarted() {
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
 
-        StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true, false);
+        StartSurfaceMediator mediator = createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true);
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
         mediator.showOverview(true);
 
@@ -1429,8 +1374,7 @@
     public void testFeedReliabilityLoggerObservesUrlFocus() {
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
 
-        StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true, false);
+        StartSurfaceMediator mediator = createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true);
         verify(mMainTabGridController)
                 .addTabSwitcherViewObserver(mTabSwitcherVisibilityObserverCaptor.capture());
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
@@ -1455,8 +1399,7 @@
     @Test
     public void testFeedReliabilityLoggerBackPressed() {
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
-        StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true, false);
+        StartSurfaceMediator mediator = createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true);
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
         mediator.showOverview(true);
         mediator.onBackPressed();
@@ -1476,8 +1419,7 @@
                 .when(mSecondaryTasksSurfaceController)
                 .isDialogVisible();
 
-        StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true, false);
+        StartSurfaceMediator mediator = createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true);
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         mediator.setSecondaryTasksSurfaceController(mSecondaryTasksSurfaceController);
 
@@ -1525,8 +1467,7 @@
         doReturn(false).when(mTabModelSelector).isIncognitoSelected();
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
-        StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true, false);
+        StartSurfaceMediator mediator = createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true);
 
         mediator.setStartSurfaceState(StartSurfaceState.SHOWN_HOMEPAGE);
         Assert.assertEquals(StartSurfaceState.SHOWN_HOMEPAGE, mediator.getStartSurfaceState());
@@ -1551,8 +1492,7 @@
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
-        StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true, false);
+        StartSurfaceMediator mediator = createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true);
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         mediator.setSecondaryTasksSurfaceController(mSecondaryTasksSurfaceController);
 
@@ -1589,8 +1529,7 @@
         doReturn(mVoiceRecognitionHandler).when(mOmniboxStub).getVoiceRecognitionHandler();
         doReturn(true).when(mVoiceRecognitionHandler).isVoiceSearchEnabled();
 
-        StartSurfaceMediator mediator =
-                createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true, false);
+        StartSurfaceMediator mediator = createStartSurfaceMediator(/*isStartSurfaceEnabled=*/true);
         mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         mediator.setSecondaryTasksSurfaceController(mSecondaryTasksSurfaceController);
 
@@ -1615,16 +1554,14 @@
                 StartSurfaceState.SHOWN_HOMEPAGE, mediator.getStartSurfaceState());
     }
 
-    private StartSurfaceMediator createStartSurfaceMediator(
-            boolean isStartSurfaceEnabled, boolean excludeMVTiles) {
-        return createStartSurfaceMediator(
-                isStartSurfaceEnabled, excludeMVTiles, /* hadWarmStart= */ false);
+    private StartSurfaceMediator createStartSurfaceMediator(boolean isStartSurfaceEnabled) {
+        return createStartSurfaceMediator(isStartSurfaceEnabled, /* hadWarmStart= */ false);
     }
 
     private StartSurfaceMediator createStartSurfaceMediator(
-            boolean isStartSurfaceEnabled, boolean excludeMVTiles, boolean hadWarmStart) {
-        StartSurfaceMediator mediator = createStartSurfaceMediatorWithoutInit(
-                isStartSurfaceEnabled, excludeMVTiles, hadWarmStart);
+            boolean isStartSurfaceEnabled, boolean hadWarmStart) {
+        StartSurfaceMediator mediator =
+                createStartSurfaceMediatorWithoutInit(isStartSurfaceEnabled, hadWarmStart);
         mediator.initWithNative(mOmniboxStub,
                 isStartSurfaceEnabled ? mExploreSurfaceCoordinatorFactory : null, mPrefService,
                 null);
@@ -1635,15 +1572,15 @@
     }
 
     private StartSurfaceMediator createStartSurfaceMediatorWithoutInit(
-            boolean isStartSurfaceEnabled, boolean excludeMVTiles, boolean hadWarmStart) {
+            boolean isStartSurfaceEnabled, boolean hadWarmStart) {
         return new StartSurfaceMediator(mMainTabGridController, null /* tabSwitcherContainer */,
                 mTabModelSelector, !isStartSurfaceEnabled ? null : mPropertyModel,
                 isStartSurfaceEnabled ? mSecondaryTasksSurfaceInitializer : null,
                 isStartSurfaceEnabled, ContextUtils.getApplicationContext(),
-                mBrowserControlsStateProvider, mActivityStateChecker, excludeMVTiles,
-                true /* excludeQueryTiles */, mStartSurfaceSupplier, hadWarmStart,
-                new DummyJankTracker(), mInitializeMVTilesRunnable, mParentTabSupplier,
-                mLogoContainerView, mBackPressManager, null /* feedPlaceholderParentView */);
+                mBrowserControlsStateProvider, mActivityStateChecker, true /* excludeQueryTiles */,
+                mStartSurfaceSupplier, hadWarmStart, new DummyJankTracker(),
+                mInitializeMVTilesRunnable, mParentTabSupplier, mLogoContainerView,
+                mBackPressManager, null /* feedPlaceholderParentView */);
     }
 
     private void onControlsOffsetChanged(int topOffset, int topControlsMinHeightOffset) {
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorMenuTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorMenuTest.java
index 2a8532d4..96f67316 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorMenuTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorMenuTest.java
@@ -33,6 +33,7 @@
 import org.chromium.base.test.BaseJUnit4ClassRunner;
 import org.chromium.base.test.util.Batch;
 import org.chromium.base.test.util.CallbackHelper;
+import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabModel;
@@ -251,6 +252,7 @@
 
     @Test
     @MediumTest
+    @DisabledTest(message = "https://crbug.com/1348710")
     public void testSingleActionView_Click() throws Exception {
         List<FakeTabSelectionEditorAction> actions = new ArrayList<>();
         TestThreadUtils.runOnUiThreadBlocking(() -> {
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
index d20ff5f..2cc3ef0 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
@@ -619,7 +619,6 @@
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                 view.setDefaultFocusHighlightEnabled(false);
             }
-
             if (mOverScrollDisabled) {
                 view.setOverScrollMode(View.OVER_SCROLL_NEVER);
             }
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
index e836442..dd606868 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
@@ -31,6 +31,8 @@
 import org.chromium.chrome.browser.feed.sections.SectionHeaderProperties;
 import org.chromium.chrome.browser.feed.sections.ViewVisibility;
 import org.chromium.chrome.browser.feed.sort_ui.FeedOptionsCoordinator;
+import org.chromium.chrome.browser.feed.sort_ui.FeedOptionsCoordinator.OptionChangedListener;
+import org.chromium.chrome.browser.feed.v2.ContentOrder;
 import org.chromium.chrome.browser.feed.v2.FeedUserActionType;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin;
@@ -75,7 +77,7 @@
 @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
 public class FeedSurfaceMediator
         implements FeedSurfaceScrollDelegate, TouchEnabledDelegate, TemplateUrlServiceObserver,
-                   ListMenu.Delegate, IdentityManager.Observer {
+                   ListMenu.Delegate, IdentityManager.Observer, OptionChangedListener {
     private static final String TAG = "FeedSurfaceMediator";
     private static final int INTEREST_FEED_HEADER_POSITION = 0;
 
@@ -96,6 +98,7 @@
                 headerList.get(index).set(SectionHeaderProperties.OPTIONS_INDICATOR_VISIBILITY_KEY,
                         ViewVisibility.VISIBLE);
             }
+            updateLayout(newStream.supportsOptions(), false);
             if (!mSettingUpStreams) {
                 logSwitchedFeeds(newStream);
                 bindStream(newStream, /*shouldScrollToTop=*/true);
@@ -183,6 +186,9 @@
 
     private static PrefChangeRegistrar sTestPrefChangeRegistar;
     private static PrefService sPrefServiceForTest;
+    private static final int SPAN_COUNT_SMALL_WIDTH = 1;
+    private static final int SPAN_COUNT_LARGE_WIDTH = 2;
+    private static final int SMALL_WIDTH = 600;
 
     private final FeedSurfaceCoordinator mCoordinator;
     private final Context mContext;
@@ -244,6 +250,7 @@
                 Profile.getLastUsedRegularProfile());
         mActionDelegate = actionDelegate;
         mOptionsCoordinator = optionsCoordinator;
+        mOptionsCoordinator.setOptionsListener(this);
 
         if (sTestPrefChangeRegistar != null) {
             mPrefChangeRegistrar = sTestPrefChangeRegistar;
@@ -270,6 +277,27 @@
         initialize();
     }
 
+    @Override
+    public void onOptionChanged() {
+        updateLayout(true, false);
+    }
+
+    private void updateLayout(boolean optionsSupported, boolean overrideSingleSpan) {
+        ListLayoutHelper listLayoutHelper =
+                mCoordinator.getHybridListRenderer().getListLayoutHelper();
+        if (!FeedFeatures.isMultiColumnFeedEnabled(mContext) || listLayoutHelper == null) return;
+        int spanCount = overrideSingleSpan ? SPAN_COUNT_SMALL_WIDTH : SPAN_COUNT_LARGE_WIDTH;
+        if (!overrideSingleSpan && optionsSupported) {
+            @ContentOrder
+            int selectedOption = mOptionsCoordinator.getSelectedOptionId();
+            // Override to single span count when showing following feed sort by site.
+            if (ContentOrder.GROUPED == selectedOption) {
+                spanCount = SPAN_COUNT_SMALL_WIDTH;
+            }
+        }
+        listLayoutHelper.setSpanCount(spanCount);
+    }
+
     /** Clears any dependencies. */
     void destroy() {
         destroyPropertiesForStream();
@@ -291,6 +319,13 @@
         mCoordinator.getView().addOnLayoutChangeListener(
                 (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
                     mSnapScrollHelper.handleScroll();
+                    if (FeedFeatures.isMultiColumnFeedEnabled(mContext)) {
+                        boolean useSingleSpan = (right - left) <= SMALL_WIDTH;
+                        Stream stream = mTabToStreamMap.get(mSectionHeaderModel.get(
+                                SectionHeaderListProperties.CURRENT_TAB_INDEX_KEY));
+                        boolean supportsOptions = (stream != null) && stream.supportsOptions();
+                        updateLayout(supportsOptions, useSingleSpan);
+                    }
                 });
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkAddEditFolderActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkAddEditFolderActivity.java
index 45fea68b..ca5e6ff 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkAddEditFolderActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkAddEditFolderActivity.java
@@ -20,11 +20,12 @@
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.SynchronousInitializationActivity;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.bookmarks.BookmarkTextInputLayout;
+import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.browser_ui.widget.TintedDrawable;
 
 import java.util.ArrayList;
@@ -161,7 +162,7 @@
             final EditText editText = mFolderTitle.getEditText();
             editText.setText(bookmarkItem.getTitle());
             editText.setSelection(editText.getText().length());
-            mParentTextView.setEnabled(bookmarkItem.isMovable());
+            mParentTextView.setEnabled(BookmarkUtils.isMovable(bookmarkItem));
         }
 
         mParentTextView.setText(mModel.getBookmarkTitle(mParentId));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkEditActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkEditActivity.java
index 403b1a01..c9d22e6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkEditActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkEditActivity.java
@@ -17,11 +17,12 @@
 import org.chromium.base.Log;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.SynchronousInitializationActivity;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.bookmarks.BookmarkTextInputLayout;
+import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.browser_ui.widget.TintedDrawable;
 import org.chromium.components.url_formatter.UrlFormatter;
 import org.chromium.url.GURL;
@@ -124,7 +125,7 @@
         mFolderTextView.setText(mModel.getBookmarkTitle(bookmarkItem.getParentId()));
         mTitleEditText.setEnabled(bookmarkItem.isEditable());
         mUrlEditText.setEnabled(bookmarkItem.isUrlEditable());
-        mFolderTextView.setEnabled(bookmarkItem.isMovable());
+        mFolderTextView.setEnabled(BookmarkUtils.isMovable(bookmarkItem));
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkFolderSelectActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkFolderSelectActivity.java
index 1e3a7ca..608a95b4a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkFolderSelectActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkFolderSelectActivity.java
@@ -28,13 +28,13 @@
 import org.chromium.base.IntentUtils;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.SynchronousInitializationActivity;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
 import org.chromium.chrome.browser.bookmarks.ReadingListFeatures;
 import org.chromium.chrome.browser.read_later.ReadingListUtils;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.browser_ui.widget.selectable_list.SelectableItemView;
 
 import java.util.ArrayList;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
index 0a4365c..6250cfa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
@@ -166,7 +166,6 @@
                         add(StartSurfaceConfiguration
                                         .SIGNIN_PROMO_NTP_SINCE_FIRST_TIME_SHOWN_LIMIT_HOURS);
                         add(StartSurfaceConfiguration.SIGNIN_PROMO_NTP_RESET_AFTER_HOURS);
-                        add(StartSurfaceConfiguration.START_SURFACE_EXCLUDE_MV_TILES);
                         add(StartSurfaceConfiguration.START_SURFACE_HIDE_INCOGNITO_SWITCH_NO_TAB);
                         add(StartSurfaceConfiguration.START_SURFACE_LAST_ACTIVE_TAB_ONLY);
                         add(StartSurfaceConfiguration.START_SURFACE_OPEN_NTP_INSTEAD_OF_START);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
index 5e52192..bbfdb42 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
@@ -17,12 +17,12 @@
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.app.bookmarks.BookmarkAddEditFolderActivity;
 import org.chromium.chrome.browser.app.bookmarks.BookmarkFolderSelectActivity;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.incognito.IncognitoUtils;
 import org.chromium.chrome.browser.renderer_host.ChromeNavigationUIData;
 import org.chromium.chrome.browser.tab.TabLaunchType;
 import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.util.ToolbarUtils;
 import org.chromium.components.browser_ui.widget.dragreorder.DragReorderableListAdapter;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
index 5318562..97b4e47 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
@@ -31,13 +31,12 @@
 import org.chromium.chrome.browser.subscriptions.SubscriptionsManager;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.commerce.PriceTracking.ProductPrice;
 import org.chromium.components.power_bookmarks.PowerBookmarkMeta;
 import org.chromium.components.power_bookmarks.PowerBookmarkType;
 import org.chromium.components.power_bookmarks.ShoppingSpecifics;
-import org.chromium.components.url_formatter.SchemeDisplay;
-import org.chromium.components.url_formatter.UrlFormatter;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.url.GURL;
 
@@ -201,111 +200,6 @@
     }
 
     /**
-     * Contains data about a bookmark or bookmark folder.
-     */
-    public static class BookmarkItem {
-        private final String mTitle;
-        private final GURL mUrl;
-        private final BookmarkId mId;
-        private final boolean mIsFolder;
-        private final BookmarkId mParentId;
-        private final boolean mIsEditable;
-        private final boolean mIsManaged;
-        private boolean mForceEditableForTesting;
-        private long mDateAdded;
-        private boolean mRead;
-
-        @VisibleForTesting
-        public BookmarkItem(BookmarkId id, String title, GURL url, boolean isFolder,
-                BookmarkId parentId, boolean isEditable, boolean isManaged, long dateAdded,
-                boolean read) {
-            mId = id;
-            mTitle = title;
-            mUrl = url;
-            mIsFolder = isFolder;
-            mParentId = parentId;
-            mIsEditable = isEditable;
-            mIsManaged = isManaged;
-            mDateAdded = dateAdded;
-            mRead = read;
-        }
-
-        /** Returns the title of the bookmark item. */
-        public String getTitle() {
-            return mTitle;
-        }
-
-        /** Returns the url of the bookmark item. */
-        public GURL getUrl() {
-            return mUrl;
-        }
-
-        /** Returns the string to display for the item's url. */
-        public String getUrlForDisplay() {
-            return UrlFormatter.formatUrlForSecurityDisplay(
-                    getUrl(), SchemeDisplay.OMIT_HTTP_AND_HTTPS);
-        }
-
-        /** Returns whether item is a folder or a bookmark. */
-        public boolean isFolder() {
-            return mIsFolder;
-        }
-
-        /** Returns the parent id of the bookmark item. */
-        public BookmarkId getParentId() {
-            return mParentId;
-        }
-
-        /** Returns whether this bookmark can be edited. */
-        public boolean isEditable() {
-            return mForceEditableForTesting || mIsEditable;
-        }
-
-        /** Returns whether this bookmark's URL can be edited */
-        public boolean isUrlEditable() {
-            return isEditable() && mId.getType() == BookmarkType.NORMAL;
-        }
-
-        /** Returns whether this bookmark can be moved */
-        public boolean isMovable() {
-            return ReadingListUtils.isSwappableReadingListItem(mId) || isReorderable();
-        }
-
-        /** Returns whether this bookmark can be moved */
-        public boolean isReorderable() {
-            return isEditable() && mId.getType() == BookmarkType.NORMAL;
-        }
-
-        /** Returns whether this is a managed bookmark. */
-        public boolean isManaged() {
-            return mIsManaged;
-        }
-
-        /** Returns the {@link BookmarkId}. */
-        public BookmarkId getId() {
-            return mId;
-        }
-
-        /** Retuns the timestamp in milliseconds since epoch that the bookmark is added. */
-        public long getDateAdded() {
-            return mDateAdded;
-        }
-
-        /**
-         * Returns whether the bookmark is read. Only valid for {@link BookmarkType#READING_LIST}.
-         * Defaults to "false" for other types.
-         */
-        public boolean isRead() {
-            return mRead;
-        }
-
-        // TODO(https://crbug.com/1019217): Remove when BookmarkModel is stubbed in tests instead.
-        public void forceEditableForTesting() {
-            mForceEditableForTesting = true;
-        }
-    }
-
-    /**
      * Handler to fetch the bookmarks, titles, urls and folder hierarchy.
      * @param profile Profile instance corresponding to the active profile.
      */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkFolderRow.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkFolderRow.java
index 0be5f6a9..22a2b044 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkFolderRow.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkFolderRow.java
@@ -11,8 +11,8 @@
 import androidx.appcompat.content.res.AppCompatResources;
 
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 
 /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java
index 37cfa06..14a5f68d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java
@@ -10,9 +10,9 @@
 import android.util.AttributeSet;
 
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.ui.favicon.FaviconUtils;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
 import org.chromium.components.favicon.IconType;
 import org.chromium.components.favicon.LargeIconBridge.LargeIconCallback;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
index 9ae03b2..40b64dd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
@@ -20,7 +20,6 @@
 
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.BookmarkListEntry.ViewType;
 import org.chromium.chrome.browser.bookmarks.BookmarkRow.Location;
@@ -35,6 +34,7 @@
 import org.chromium.chrome.browser.ui.signin.PersonalizedSigninPromoView;
 import org.chromium.chrome.browser.ui.signin.SyncPromoController.SyncPromoState;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.util.GlobalDiscardableReferencePool;
 import org.chromium.components.browser_ui.widget.dragreorder.DragReorderableListAdapter;
@@ -586,7 +586,7 @@
     private int getBookmarkItemEndIndex() {
         int endIndex = mElements.size() - 1;
         BookmarkItem bookmarkItem = mElements.get(endIndex).getBookmarkItem();
-        if (bookmarkItem == null || !bookmarkItem.isMovable()) {
+        if (bookmarkItem == null || !BookmarkUtils.isMovable(bookmarkItem)) {
             endIndex--;
         }
         return endIndex;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkListEntry.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkListEntry.java
index 681196ee..e920c07 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkListEntry.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkListEntry.java
@@ -9,7 +9,7 @@
 import androidx.annotation.IntDef;
 import androidx.annotation.Nullable;
 
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.power_bookmarks.PowerBookmarkMeta;
 
 import java.lang.annotation.Retention;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
index a12fe5f..09cdffd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
@@ -22,7 +22,6 @@
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.app.bookmarks.BookmarkActivity;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.commerce.ShoppingFeatures;
 import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksReader;
@@ -31,6 +30,7 @@
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.util.ConversionUtils;
 import org.chromium.components.browser_ui.widget.dragreorder.DragStateDelegate;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java
index b88daa9..6b095bd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java
@@ -10,6 +10,7 @@
 import org.chromium.base.ObserverList;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 
 import java.util.ArrayList;
@@ -107,7 +108,7 @@
     }
 
     /**
-     * @see org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem#getTitle()
+     * @see org.chromium.chrome.browser.bookmarks.BookmarkItem#getTitle()
      */
     public String getBookmarkTitle(BookmarkId bookmarkId) {
         BookmarkItem bookmarkItem = getBookmarkById(bookmarkId);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkRow.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkRow.java
index 9bb3bfe..f25c425 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkRow.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkRow.java
@@ -21,8 +21,8 @@
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.app.bookmarks.BookmarkAddEditFolderActivity;
 import org.chromium.chrome.browser.app.bookmarks.BookmarkFolderSelectActivity;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.widget.listmenu.BasicListMenu;
 import org.chromium.components.browser_ui.widget.listmenu.ListMenu;
@@ -170,7 +170,7 @@
             if (bookmarkItem != null) {
                 // Reading list items can sometimes be movable (for type swapping purposes), but for
                 // UI purposes they shouldn't be movable.
-                canMove = bookmarkItem.isMovable();
+                canMove = BookmarkUtils.isMovable(bookmarkItem);
                 canReorder = bookmarkItem.isReorderable() && !mFromFilterView;
             }
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkSaveFlowMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkSaveFlowMediator.java
index 073fcef..f30cd65 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkSaveFlowMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkSaveFlowMediator.java
@@ -14,7 +14,6 @@
 import org.chromium.base.CallbackController;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.PowerBookmarkMetrics.PriceTrackingState;
 import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
@@ -22,6 +21,7 @@
 import org.chromium.chrome.browser.subscriptions.CommerceSubscription;
 import org.chromium.chrome.browser.subscriptions.SubscriptionsManager;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.feature_engagement.EventConstants;
 import org.chromium.components.power_bookmarks.PowerBookmarkMeta;
 import org.chromium.ui.modelutil.PropertyModel;
@@ -118,7 +118,8 @@
                                 : R.string.bookmark_save_flow_title));
         mPropertyModel.set(BookmarkSaveFlowProperties.FOLDER_SELECT_ICON,
                 BookmarkUtils.getFolderIcon(mContext, bookmarkId.getType()));
-        mPropertyModel.set(BookmarkSaveFlowProperties.FOLDER_SELECT_ICON_ENABLED, item.isMovable());
+        mPropertyModel.set(BookmarkSaveFlowProperties.FOLDER_SELECT_ICON_ENABLED,
+                BookmarkUtils.isMovable(item));
         mPropertyModel.set(BookmarkSaveFlowProperties.SUBTITLE_TEXT,
                 mContext.getResources().getString(wasBookmarkMoved
                                 ? R.string.bookmark_page_moved_location
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java
index 2b4ebf4..0eeb9d17 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java
@@ -9,11 +9,11 @@
 import org.chromium.base.lifetime.DestroyChecker;
 import org.chromium.base.task.PostTask;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel.BookmarkDeleteObserver;
 import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.content_public.browser.UiThreadTaskTraits;
 
 import java.util.Locale;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
index 6327eca9..075de7c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
@@ -37,7 +37,6 @@
 import org.chromium.chrome.browser.app.bookmarks.BookmarkActivity;
 import org.chromium.chrome.browser.app.bookmarks.BookmarkEditActivity;
 import org.chromium.chrome.browser.app.bookmarks.BookmarkFolderSelectActivity;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider.CustomTabsUiType;
 import org.chromium.chrome.browser.commerce.ShoppingFeatures;
 import org.chromium.chrome.browser.customtabs.CustomTabIntentDataProvider;
@@ -47,6 +46,7 @@
 import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
 import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
 import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.read_later.ReadingListUtils;
 import org.chromium.chrome.browser.subscriptions.CommerceSubscriptionsServiceFactory;
 import org.chromium.chrome.browser.subscriptions.SubscriptionsManager;
 import org.chromium.chrome.browser.tab.Tab;
@@ -56,6 +56,7 @@
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController;
 import org.chromium.chrome.browser.user_education.UserEducationHelper;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 import org.chromium.components.embedder_support.util.UrlConstants;
@@ -681,6 +682,11 @@
         }
     }
 
+    /** Returns whether this bookmark can be moved */
+    public static boolean isMovable(BookmarkItem node) {
+        return ReadingListUtils.isSwappableReadingListItem(node.getId()) || node.isReorderable();
+    }
+
     /** Allows strings to be landed for translation. */
     private void fakeFunctiontoAllowStringMerge() {
         int id = R.string.price_tracking_save_flow_notification_switch_subtitle_error;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkShoppingItemRow.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkShoppingItemRow.java
index 7a907fc2..cf4d5ba 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkShoppingItemRow.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkShoppingItemRow.java
@@ -19,12 +19,12 @@
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.Callback;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.PowerBookmarkMetrics.PriceTrackingState;
 import org.chromium.chrome.browser.subscriptions.CommerceSubscription;
 import org.chromium.chrome.browser.subscriptions.SubscriptionsManager;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.browser_ui.widget.RoundedCornerOutlineProvider;
 import org.chromium.components.browser_ui.widget.chips.ChipView;
 import org.chromium.components.image_fetcher.ImageFetcher;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkTagChipList.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkTagChipList.java
index d134a66..73fb804 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkTagChipList.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkTagChipList.java
@@ -11,9 +11,9 @@
 import androidx.annotation.VisibleForTesting;
 
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.browser_ui.widget.chips.ChipProperties;
 import org.chromium.components.browser_ui.widget.chips.ChipsCoordinator;
 import org.chromium.components.power_bookmarks.PowerBookmarkMeta;
@@ -134,4 +134,4 @@
 
         chipModel.set(ChipProperties.SELECTED, !chipModel.get(ChipProperties.SELECTED));
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeader.java
index 20ae95e..9af47792 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeader.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeader.java
@@ -9,7 +9,7 @@
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 
 import java.util.Collections;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java
index e23689ee..61cf5a0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java
@@ -11,12 +11,12 @@
 
 import org.chromium.base.supplier.ObservableSupplier;
 import org.chromium.base.supplier.Supplier;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
 import org.chromium.chrome.browser.read_later.ReadingListUtils;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetServiceImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetServiceImpl.java
index 781b5c9..b02a5e8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetServiceImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetServiceImpl.java
@@ -28,7 +28,6 @@
 import org.chromium.base.task.PostTask;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.IntentHandler;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
@@ -36,6 +35,7 @@
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.ui.favicon.FaviconUtils;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
 import org.chromium.components.favicon.IconType;
 import org.chromium.components.favicon.LargeIconBridge;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
index 477320d..bd2d63f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
@@ -440,6 +440,15 @@
         View dragBar = mActivity.findViewById(R.id.drag_bar);
         GradientDrawable drawable = (GradientDrawable) dragBar.getBackground();
         drawable.setColor(color);
+
+        ImageView handle = (ImageView) mActivity.findViewById(R.id.drag_handlebar);
+        int handleColor = mActivity.getColor(R.color.drag_handlebar_color_baseline);
+        if (scrimFraction > 0.f) {
+            handle.setColorFilter(ColorUtils.getColorWithOverlay(
+                    handleColor, scrimColorOpaque, scrimFraction * scrimColorAlpha, false));
+        } else {
+            handle.clearColorFilter();
+        }
     }
 
     private void initializeHeight() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/read_later/ReadingListUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/read_later/ReadingListUtils.java
index 2847c390..6bd24abe 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/read_later/ReadingListUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/read_later/ReadingListUtils.java
@@ -11,7 +11,6 @@
 
 import org.chromium.base.Log;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.bookmarks.BookmarkUndoController;
 import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
@@ -19,6 +18,7 @@
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 import org.chromium.components.embedder_support.util.UrlUtilities;
@@ -51,7 +51,7 @@
         BookmarkUndoController.createOneshotBookmarkUndoController(
                 activity, bookmarkModel, snackbarManager);
         bookmarkModel.finishLoadingBookmarkModel(() -> {
-            BookmarkBridge.BookmarkItem bookmarkItem =
+            BookmarkItem bookmarkItem =
                     bookmarkModel.getReadingListItem(currentTab.getOriginalUrl());
             bookmarkModel.deleteBookmarks(bookmarkItem.getId());
         });
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/BookmarkEditTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/BookmarkEditTest.java
index 1635df1..272dba14 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/BookmarkEditTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/BookmarkEditTest.java
@@ -28,7 +28,6 @@
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CriteriaHelper;
 import org.chromium.base.test.util.Feature;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.bookmarks.BookmarkModelTest;
@@ -36,6 +35,7 @@
 import org.chromium.chrome.test.ChromeBrowserTestRule;
 import org.chromium.chrome.test.util.BookmarkTestUtil;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.url.GURL;
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/BookmarkTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/BookmarkTest.java
index d825259..fcb0067 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/BookmarkTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/BookmarkTest.java
@@ -62,7 +62,6 @@
 import org.chromium.chrome.browser.app.metrics.LaunchCauseMetrics;
 import org.chromium.chrome.browser.bookmarks.BookmarkActionBar;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
 import org.chromium.chrome.browser.bookmarks.BookmarkDelegate;
 import org.chromium.chrome.browser.bookmarks.BookmarkFolderRow;
@@ -95,6 +94,7 @@
 import org.chromium.chrome.test.util.MenuUtils;
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.widget.RecyclerViewTestUtils;
 import org.chromium.components.browser_ui.widget.listmenu.ListMenuButton;
@@ -1181,13 +1181,12 @@
         // Verify that bookmark 1 is editable (so more button can be triggered) but not movable.
         BookmarkId partnerBookmarkId1 = getReorderAdapter().getIdByPosition(0);
         TestThreadUtils.runOnUiThreadBlocking(() -> {
-            BookmarkBridge.BookmarkItem partnerBookmarkItem1 =
-                    mBookmarkModel.getBookmarkById(partnerBookmarkId1);
+            BookmarkItem partnerBookmarkItem1 = mBookmarkModel.getBookmarkById(partnerBookmarkId1);
             partnerBookmarkItem1.forceEditableForTesting();
             Assert.assertEquals("Incorrect bookmark type for item 1", BookmarkType.PARTNER,
                     partnerBookmarkId1.getType());
-            Assert.assertFalse(
-                    "Partner item 1 should not be movable", partnerBookmarkItem1.isMovable());
+            Assert.assertFalse("Partner item 1 should not be movable",
+                    BookmarkUtils.isMovable(partnerBookmarkItem1));
             Assert.assertTrue(
                     "Partner item 1 should be editable", partnerBookmarkItem1.isEditable());
         });
@@ -1202,13 +1201,12 @@
         // Verify that bookmark 2 is not movable.
         BookmarkId partnerBookmarkId2 = getReorderAdapter().getIdByPosition(1);
         TestThreadUtils.runOnUiThreadBlocking(() -> {
-            BookmarkBridge.BookmarkItem partnerBookmarkItem2 =
-                    mBookmarkModel.getBookmarkById(partnerBookmarkId2);
+            BookmarkItem partnerBookmarkItem2 = mBookmarkModel.getBookmarkById(partnerBookmarkId2);
             partnerBookmarkItem2.forceEditableForTesting();
             Assert.assertEquals("Incorrect bookmark type for item 2", BookmarkType.PARTNER,
                     partnerBookmarkId2.getType());
-            Assert.assertFalse(
-                    "Partner item 2 should not be movable", partnerBookmarkItem2.isMovable());
+            Assert.assertFalse("Partner item 2 should not be movable",
+                    BookmarkUtils.isMovable(partnerBookmarkItem2));
             Assert.assertTrue(
                     "Partner item 2 should be editable", partnerBookmarkItem2.isEditable());
         });
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/ReadingListTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/ReadingListTest.java
index 835e4dc5..67a44f7 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/ReadingListTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/app/bookmarks/ReadingListTest.java
@@ -53,7 +53,6 @@
 import org.chromium.chrome.browser.IntentHandler;
 import org.chromium.chrome.browser.bookmarks.BookmarkActionBar;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkDelegate;
 import org.chromium.chrome.browser.bookmarks.BookmarkItemsAdapter;
 import org.chromium.chrome.browser.bookmarks.BookmarkManager;
@@ -79,6 +78,7 @@
 import org.chromium.chrome.test.util.MenuUtils;
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.widget.RecyclerViewTestUtils;
 import org.chromium.components.browser_ui.widget.selectable_list.SelectableListToolbar;
@@ -559,4 +559,4 @@
         Assert.assertTrue("Read later items should have delete option",
                 toolbar.getMenu().findItem(R.id.selection_mode_delete_menu_id).isVisible());
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkBridgeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkBridgeTest.java
index 555438a..d4fd847 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkBridgeTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkBridgeTest.java
@@ -20,7 +20,6 @@
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.RequiresRestart;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.subscriptions.CommerceSubscription;
@@ -29,6 +28,7 @@
 import org.chromium.chrome.test.util.BookmarkTestUtil;
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.power_bookmarks.PowerBookmarkMeta;
 import org.chromium.components.power_bookmarks.ShoppingSpecifics;
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRowTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRowTest.java
index f42ea632..1140363 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRowTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRowTest.java
@@ -25,10 +25,10 @@
 import org.mockito.MockitoAnnotations;
 
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkRow.Location;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.widget.RoundedIconGenerator;
 import org.chromium.components.browser_ui.widget.dragreorder.DragStateDelegate;
@@ -143,4 +143,4 @@
         mBookmarkItemRow.onClick();
         verify(mDelegate, Mockito.times(0)).openBookmark(mBookmarkId);
     }
-}
\ No newline at end of file
+}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkModelTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkModelTest.java
index 4cc619e..62dc988b 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkModelTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkModelTest.java
@@ -17,11 +17,11 @@
 import org.chromium.base.test.UiThreadTest;
 import org.chromium.base.test.util.Batch;
 import org.chromium.base.test.util.Feature;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.test.ChromeBrowserTestRule;
 import org.chromium.chrome.test.util.BookmarkTestUtil;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.url.GURL;
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/identity_disc/IdentityDiscControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/identity_disc/IdentityDiscControllerTest.java
index c0674d7..386801c 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/identity_disc/IdentityDiscControllerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/identity_disc/IdentityDiscControllerTest.java
@@ -30,7 +30,6 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.DisabledTest;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.flags.ChromeSwitches;
 import org.chromium.chrome.browser.tab.Tab;
@@ -86,7 +85,6 @@
 
     @Test
     @MediumTest
-    @DisabledTest(message = "crbug.com/1363220")
     public void testIdentityDiscWithSignin() {
         // When user is signed out, Identity Disc should not be visible on the NTP.
         onView(withId(R.id.optional_toolbar_button)).check((view, noViewException) -> {
@@ -101,11 +99,8 @@
         // TODO(https://crbug.com/1132291): Remove the reload once the sign-in without sync observer
         //  is implemented.
         TestThreadUtils.runOnUiThreadBlocking(mTab::reload);
-        waitForView(allOf(withId(R.id.optional_toolbar_button), isDisplayed()));
-
-        onView(withId(R.id.optional_toolbar_button))
-                .check(matches(
-                        withContentDescription(R.string.accessibility_toolbar_btn_identity_disc)));
+        waitForView(allOf(withId(R.id.optional_toolbar_button), isDisplayed(),
+                withContentDescription(R.string.accessibility_toolbar_btn_identity_disc)));
 
         mSigninTestRule.signOut();
         waitForView(allOf(withId(R.id.optional_toolbar_button),
@@ -114,7 +109,6 @@
 
     @Test
     @MediumTest
-    @DisabledTest(message = "crbug.com/1363220")
     public void testIdentityDiscWithSigninAndEnableSync() {
         // When user is signed out, Identity Disc should not be visible on the NTP.
         onView(withId(R.id.optional_toolbar_button)).check((view, noViewException) -> {
@@ -126,11 +120,9 @@
 
         // Identity Disc should be shown on sign-in state change without NTP refresh.
         mSigninTestRule.addTestAccountThenSigninAndEnableSync();
-        waitForView(allOf(withId(R.id.optional_toolbar_button), isDisplayed()));
-
-        onView(withId(R.id.optional_toolbar_button))
-                .check(matches(
-                        withContentDescription(R.string.accessibility_toolbar_btn_identity_disc)));
+        waitForView(allOf(withId(R.id.optional_toolbar_button),
+                withContentDescription(R.string.accessibility_toolbar_btn_identity_disc),
+                isDisplayed()));
 
         mSigninTestRule.signOut();
         waitForView(allOf(withId(R.id.optional_toolbar_button),
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java
index c794436..32358f3 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java
@@ -293,9 +293,7 @@
             urlLayoutParams = (MarginLayoutParams) urlContainer.getLayoutParams();
             int endMarginWithIcon = MarginLayoutParamsCompat.getMarginEnd(urlLayoutParams);
 
-            Assert.assertEquals(endMarginNoIcon
-                            + locationBar.getStatusCoordinatorForTesting()
-                                      .getEndPaddingPixelSizeOnFocusDelta(),
+            Assert.assertEquals(endMarginNoIcon + locationBar.getEndPaddingPixelSizeOnFocusDelta(),
                     endMarginWithIcon);
         });
     }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeaderTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeaderTest.java
index 833ca9e..f2df6c0 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeaderTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeaderTest.java
@@ -21,9 +21,9 @@
 import org.chromium.base.metrics.UmaRecorderHolder;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkListEntry.ViewType;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 
 import java.util.ArrayList;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java
index 18fa558..36b0ee96 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java
@@ -43,6 +43,7 @@
 import org.chromium.chrome.browser.feed.sections.SectionHeaderProperties;
 import org.chromium.chrome.browser.feed.sections.ViewVisibility;
 import org.chromium.chrome.browser.feed.sort_ui.FeedOptionsCoordinator;
+import org.chromium.chrome.browser.feed.v2.ContentOrder;
 import org.chromium.chrome.browser.feed.webfeed.WebFeedBridge;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.ntp.cards.SignInPromo;
@@ -55,6 +56,7 @@
 import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger;
 import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger.StreamType;
 import org.chromium.chrome.browser.xsurface.HybridListRenderer;
+import org.chromium.chrome.browser.xsurface.ListLayoutHelper;
 import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.components.feed.proto.wire.ReliabilityLoggingEnums.DiscoverLaunchResult;
 import org.chromium.components.prefs.PrefService;
@@ -72,7 +74,7 @@
 // default or removed if the flag is removed.
 @Features.DisableFeatures(ChromeFeatureList.SYNC_ANDROID_LIMIT_NTP_PROMO_IMPRESSIONS)
 @Features.EnableFeatures({ChromeFeatureList.WEB_FEED, ChromeFeatureList.INTEREST_FEED_V2_HEARTS,
-        ChromeFeatureList.WEB_FEED_SORT})
+        ChromeFeatureList.WEB_FEED_SORT, ChromeFeatureList.FEED_MULTI_COLUMN})
 public class FeedSurfaceMediatorTest {
     static final @Px int TOOLBAR_HEIGHT = 10;
     @Rule
@@ -113,6 +115,8 @@
     @Mock
     private HybridListRenderer mHybridListRenderer;
     @Mock
+    private ListLayoutHelper mListLayoutHelper;
+    @Mock
     private FeedSurfaceLifecycleManager mFeedSurfaceLifecycleManager;
     @Mock
     private FeedOptionsCoordinator mOptionsCoordinator;
@@ -147,6 +151,7 @@
         when(mFeedSurfaceCoordinator.getReliabilityLogger()).thenReturn(mReliabilityLogger);
         when(mReliabilityLogger.getLaunchLogger()).thenReturn(mLaunchReliabilityLogger);
         when(mFeedSurfaceCoordinator.getHybridListRenderer()).thenReturn(mHybridListRenderer);
+        when(mHybridListRenderer.getListLayoutHelper()).thenReturn(mListLayoutHelper);
         when(mFeedSurfaceCoordinator.getSurfaceLifecycleManager())
                 .thenReturn(mFeedSurfaceLifecycleManager);
         ObservableSupplierImpl<Boolean> hasUnreadContent = new ObservableSupplierImpl<>();
@@ -487,22 +492,8 @@
     public void testOnHeaderSelected_selectedWithOptions() {
         PropertyModel model = SectionHeaderListProperties.create(TOOLBAR_HEIGHT);
         PropertyModel forYou = SectionHeaderProperties.createSectionHeader("For you");
-        model.get(SectionHeaderListProperties.SECTION_HEADERS_KEY).add(forYou);
-        forYou.set(SectionHeaderProperties.UNREAD_CONTENT_KEY, true);
-        forYou.set(SectionHeaderProperties.OPTIONS_INDICATOR_VISIBILITY_KEY, ViewVisibility.GONE);
-
-        model.get(SectionHeaderListProperties.SECTION_HEADERS_KEY)
-                .add(SectionHeaderProperties.createSectionHeader("Following"));
-        mFeedSurfaceMediator = createMediator(FeedSurfaceCoordinator.StreamTabId.FOLLOWING, model);
-
-        when(mForYouStream.supportsOptions()).thenReturn(true);
-        mFeedSurfaceMediator.setStreamForTesting(
-                FeedSurfaceCoordinator.StreamTabId.FOLLOWING, mForYouStream);
-        mFeedSurfaceMediator.setStreamForTesting(
-                FeedSurfaceCoordinator.StreamTabId.FOR_YOU, mForYouStream);
-
         OnSectionHeaderSelectedListener listener =
-                mFeedSurfaceMediator.getOrCreateSectionHeaderListenerForTesting();
+                getOnSectionHeaderSelectedListener(model, forYou, true);
         listener.onSectionHeaderSelected(0);
 
         assertEquals(0, model.get(SectionHeaderListProperties.CURRENT_TAB_INDEX_KEY));
@@ -511,10 +502,45 @@
                 forYou.get(SectionHeaderProperties.OPTIONS_INDICATOR_VISIBILITY_KEY));
     }
 
+    @Config(qualifiers = "en-sw600dp")
     @Test
-    public void testOnHeaderSelected_selectedNoOptions() {
+    public void testOnHeaderSelected_selectedWithLatestOptionsOnTablet() {
         PropertyModel model = SectionHeaderListProperties.create(TOOLBAR_HEIGHT);
         PropertyModel forYou = SectionHeaderProperties.createSectionHeader("For you");
+        OnSectionHeaderSelectedListener listener =
+                getOnSectionHeaderSelectedListener(model, forYou, true);
+        when(mOptionsCoordinator.getSelectedOptionId()).thenReturn(ContentOrder.REVERSE_CHRON);
+        listener.onSectionHeaderSelected(1);
+
+        verify(mListLayoutHelper).setSpanCount(2);
+    }
+
+    @Config(qualifiers = "en-sw600dp")
+    @Test
+    public void testOnHeaderSelected_selectedWithSortOptionsOnTablet() {
+        PropertyModel model = SectionHeaderListProperties.create(TOOLBAR_HEIGHT);
+        PropertyModel forYou = SectionHeaderProperties.createSectionHeader("For you");
+        OnSectionHeaderSelectedListener listener =
+                getOnSectionHeaderSelectedListener(model, forYou, true);
+        when(mOptionsCoordinator.getSelectedOptionId()).thenReturn(ContentOrder.GROUPED);
+        listener.onSectionHeaderSelected(1);
+
+        verify(mListLayoutHelper).setSpanCount(1);
+    }
+
+    @Config(qualifiers = "en-sw600dp")
+    @Test
+    public void testOnOptionSelected() {
+        FeedSurfaceMediator mediator = createMediator();
+        when(mOptionsCoordinator.getSelectedOptionId()).thenReturn(ContentOrder.GROUPED);
+
+        mediator.onOptionChanged();
+
+        verify(mListLayoutHelper).setSpanCount(1);
+    }
+
+    private OnSectionHeaderSelectedListener getOnSectionHeaderSelectedListener(
+            PropertyModel model, PropertyModel forYou, boolean value) {
         model.get(SectionHeaderListProperties.SECTION_HEADERS_KEY).add(forYou);
         forYou.set(SectionHeaderProperties.UNREAD_CONTENT_KEY, true);
         forYou.set(SectionHeaderProperties.OPTIONS_INDICATOR_VISIBILITY_KEY, ViewVisibility.GONE);
@@ -523,7 +549,7 @@
                 .add(SectionHeaderProperties.createSectionHeader("Following"));
         mFeedSurfaceMediator = createMediator(FeedSurfaceCoordinator.StreamTabId.FOLLOWING, model);
 
-        when(mForYouStream.supportsOptions()).thenReturn(false);
+        when(mForYouStream.supportsOptions()).thenReturn(value);
         mFeedSurfaceMediator.setStreamForTesting(
                 FeedSurfaceCoordinator.StreamTabId.FOLLOWING, mForYouStream);
         mFeedSurfaceMediator.setStreamForTesting(
@@ -531,6 +557,15 @@
 
         OnSectionHeaderSelectedListener listener =
                 mFeedSurfaceMediator.getOrCreateSectionHeaderListenerForTesting();
+        return listener;
+    }
+
+    @Test
+    public void testOnHeaderSelected_selectedNoOptions() {
+        PropertyModel model = SectionHeaderListProperties.create(TOOLBAR_HEIGHT);
+        PropertyModel forYou = SectionHeaderProperties.createSectionHeader("For you");
+        OnSectionHeaderSelectedListener listener =
+                getOnSectionHeaderSelectedListener(model, forYou, false);
         listener.onSectionHeaderSelected(0);
 
         assertEquals(0, model.get(SectionHeaderListProperties.CURRENT_TAB_INDEX_KEY));
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/read_later/ReadingListUtilsUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/read_later/ReadingListUtilsUnitTest.java
index a7cdd243..2df2da2 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/read_later/ReadingListUtilsUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/read_later/ReadingListUtilsUnitTest.java
@@ -26,12 +26,12 @@
 import org.chromium.base.FeatureList.TestValues;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
-import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
 import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.components.bookmarks.BookmarkItem;
 import org.chromium.components.bookmarks.BookmarkType;
 import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
 import org.chromium.url.GURL;
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 7562fa615..c7aa7fc 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -5012,7 +5012,7 @@
           Allow <ph name="EXTENSIONS_REQUESTING_ACCESS_COUNT">$1<ex>3</ex></ph>?
         </message>
         <message name="IDS_EXTENSIONS_REQUEST_ACCESS_BUTTON_TOOLTIP_SINGLE_EXTENSION" desc="The tooltip text of the request access button that appears on the toolbar when an extension requests access to the site">
-          Click to allow "<ph name="EXTENSIONS_REQUESTING_ACCESS">$1<ex>Extension A</ex></ph>"" on <ph name="ORIGIN">$2<ex>google.com</ex></ph>:
+          Click to allow "<ph name="EXTENSIONS_REQUESTING_ACCESS">$1<ex>Extension A</ex></ph>" on <ph name="ORIGIN">$2<ex>google.com</ex></ph>:
         </message>
         <message name="IDS_EXTENSIONS_REQUEST_ACCESS_BUTTON_TOOLTIP_MULTIPLE_EXTENSIONS" desc="The tooltip text of the request access button that appears on the toolbar when an extension requests access to the site">
           Click to allow on <ph name="ORIGIN">$1<ex>google.com</ex></ph>:
diff --git a/chrome/app/generated_resources_grd/IDS_EXTENSIONS_REQUEST_ACCESS_BUTTON_TOOLTIP_SINGLE_EXTENSION.png.sha1 b/chrome/app/generated_resources_grd/IDS_EXTENSIONS_REQUEST_ACCESS_BUTTON_TOOLTIP_SINGLE_EXTENSION.png.sha1
index 14acd9d..9411a23 100644
--- a/chrome/app/generated_resources_grd/IDS_EXTENSIONS_REQUEST_ACCESS_BUTTON_TOOLTIP_SINGLE_EXTENSION.png.sha1
+++ b/chrome/app/generated_resources_grd/IDS_EXTENSIONS_REQUEST_ACCESS_BUTTON_TOOLTIP_SINGLE_EXTENSION.png.sha1
@@ -1 +1 @@
-d0f16311fb34781b59844e1c74d1064f11bca361
\ No newline at end of file
+2492098bd6bb7b77f4a4d6af1fb036b38ac99732
\ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index b0eb127..ae6a346c 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3985,6 +3985,8 @@
       "metrics/first_web_contents_profiler_base.cc",
       "metrics/first_web_contents_profiler_base.h",
       "metrics/incognito_observer_desktop.cc",
+      "metrics/power/battery_discharge_reporter.cc",
+      "metrics/power/battery_discharge_reporter.h",
       "metrics/power/power_metrics.cc",
       "metrics/power/power_metrics.h",
       "metrics/power/power_metrics_constants.cc",
@@ -7994,10 +7996,7 @@
   }
 
   if (is_win || is_mac || is_linux || is_chromeos || is_fuchsia) {
-    deps += [
-      "//chrome/browser/resources/inline_login:components",
-      "//services/resource_coordinator/public/mojom:mojom_js",
-    ]
+    deps += [ "//services/resource_coordinator/public/mojom:mojom_js" ]
   }
 
   if (is_android) {
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index fe08db9..33438488 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1190,7 +1190,7 @@
          std::size(kSidePanelJourneysOpensFromOmniboxParams), nullptr},
 };
 const FeatureEntry::FeatureParam kJourneysContentClusteringParams[] = {
-    {"collections_blocklist", "/collections/software"},
+    {"collections_blocklist", "/collection/software"},
     {"exclude_entities_that_have_no_collections", "true"},
 };
 const FeatureEntry::FeatureVariation kJourneysContentClusteringVariations[] = {
@@ -3273,6 +3273,14 @@
         {"For All Users", kUpmAndroidEnableForAllUsers,
          std::size(kUpmAndroidEnableForAllUsers), nullptr},
 };
+
+constexpr FeatureEntry::FeatureParam kIgnoreUPMAuthErrorMessageTimeouts[] = {
+    {"ignore_auth_error_message_timeouts", "true"}};
+constexpr FeatureEntry::FeatureVariation
+    kUnifiedPasswordManagerErrorMessagesVariations[] = {
+        {"Ignore timeouts", kIgnoreUPMAuthErrorMessageTimeouts,
+         std::size(kIgnoreUPMAuthErrorMessageTimeouts), nullptr}};
+
 #endif  // BUILDFLAG(IS_ANDROID)
 
 const FeatureEntry::FeatureParam kUnthrottledNestedTimeout_NestingLevel = {
@@ -8489,8 +8497,10 @@
      flag_descriptions::kUnifiedPasswordManagerErrorMessagesName,
      flag_descriptions::kUnifiedPasswordManagerErrorMessagesDescription,
      kOsAndroid,
-     FEATURE_VALUE_TYPE(
-         password_manager::features::kUnifiedPasswordManagerErrorMessages)},
+     FEATURE_WITH_PARAMS_VALUE_TYPE(
+         password_manager::features::kUnifiedPasswordManagerErrorMessages,
+         kUnifiedPasswordManagerErrorMessagesVariations,
+         "UnifiedPasswordManagerErrorMessages")},
 
     {"google-mobile-services-passwords-reenrollment",
      flag_descriptions::kUnifiedPasswordManagerAndroidReenrollmentName,
diff --git a/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc b/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc
index f76f899..75dd955 100644
--- a/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc
+++ b/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/accessibility/accessibility_extension_api_chromeos.h"
 
 #include <stddef.h>
+
 #include <memory>
 #include <set>
 #include <vector>
@@ -15,6 +16,7 @@
 #include "ash/public/cpp/event_rewriter_controller.h"
 #include "ash/public/cpp/window_tree_host_lookup.h"
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/json/json_writer.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
@@ -178,10 +180,11 @@
   ui::KeyboardCode key_code_to_compare = ui::VKEY_UNKNOWN;
   const ui::KeyboardLayoutEngine* layout_engine =
       ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine();
-  ui::DomCode dom_code =
+  ui::DomCode dom_code_for_key_code =
       ui::KeycodeConverter::MapUSPositionalShortcutKeyToDomCode(key_code);
-  if (dom_code != ui::DomCode::NONE) {
-    if (layout_engine->Lookup(dom_code, /*flags=*/ui::EF_NONE, &dom_key,
+  if (dom_code_for_key_code != ui::DomCode::NONE) {
+    if (layout_engine->Lookup(dom_code_for_key_code,
+                              /*event_flags=*/ui::EF_NONE, &dom_key,
                               &key_code_to_compare)) {
       if (dom_key.IsDeadKey() || !dom_key.IsValid()) {
         return RespondNow(Error("Invalid key code"));
@@ -192,7 +195,7 @@
   }
 
   for (const auto& dom_code : ui::kDomCodesArray) {
-    if (!layout_engine->Lookup(dom_code, /*flags=*/ui::EF_NONE, &dom_key,
+    if (!layout_engine->Lookup(dom_code, /*event_flags=*/ui::EF_NONE, &dom_key,
                                &key_code_to_compare)) {
       continue;
     }
@@ -902,8 +905,7 @@
        *(params->actions)) {
     std::string action = accessibility_private::ToString(extension_action);
     // Check that this action is not already in our actions list.
-    if (std::find(actions_to_show.begin(), actions_to_show.end(), action) !=
-        actions_to_show.end()) {
+    if (base::Contains(actions_to_show, action)) {
       continue;
     }
     actions_to_show.push_back(action);
diff --git a/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java b/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java
index f4d49d3..b290709 100644
--- a/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java
+++ b/chrome/browser/android/crypto/java/src/org/chromium/chrome/browser/crypto/CipherFactory.java
@@ -145,22 +145,22 @@
      * @return Data to use for the Cipher, null if it couldn't be generated.
      */
     CipherData getCipherData(boolean generateIfNeeded) {
-        if (mData == null && generateIfNeeded) {
-            // Ideally, this task should have been started way before this.
-            triggerKeyGeneration();
+        synchronized (mDataLock) {
+            if (mData == null && generateIfNeeded) {
+                // Ideally, this task should have been started way before this.
+                triggerKeyGenerationLocked();
 
-            // Grab the data from the task.
-            CipherData data;
-            try {
-                data = mDataGenerator.get();
-            } catch (InterruptedException e) {
-                throw new RuntimeException(e);
-            } catch (ExecutionException e) {
-                throw new RuntimeException(e);
-            }
+                // Grab the data from the task.
+                CipherData data;
+                try {
+                    data = mDataGenerator.get();
+                } catch (InterruptedException e) {
+                    throw new RuntimeException(e);
+                } catch (ExecutionException e) {
+                    throw new RuntimeException(e);
+                }
 
-            // Only the first thread is allowed to save the data.
-            synchronized (mDataLock) {
+                // Only the first thread is allowed to save the data.
                 if (mData == null) {
                     mData = data;
 
@@ -219,13 +219,16 @@
      * than immediately calling {@link CipherFactory#getCipher(int)}.
      */
     public void triggerKeyGeneration() {
-        if (mData != null) return;
-
         synchronized (mDataLock) {
-            if (mDataGenerator == null) {
-                mDataGenerator = new FutureTask<CipherData>(createGeneratorCallable());
-                AsyncTask.THREAD_POOL_EXECUTOR.execute(mDataGenerator);
-            }
+            triggerKeyGenerationLocked();
+        }
+    }
+
+    private void triggerKeyGenerationLocked() {
+        if (mData != null) return;
+        if (mDataGenerator == null) {
+            mDataGenerator = new FutureTask<CipherData>(createGeneratorCallable());
+            AsyncTask.THREAD_POOL_EXECUTOR.execute(mDataGenerator);
         }
     }
 
diff --git a/chrome/browser/android/history/history_deletion_bridge_unittest.cc b/chrome/browser/android/history/history_deletion_bridge_unittest.cc
index 822aeea..df49b398 100644
--- a/chrome/browser/android/history/history_deletion_bridge_unittest.cc
+++ b/chrome/browser/android/history/history_deletion_bridge_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/android/history/history_deletion_bridge.h"
 
+#include "base/containers/contains.h"
 #include "base/time/time.h"
 #include "components/history/core/browser/history_types.h"
 #include "components/history/core/browser/url_row.h"
@@ -25,6 +26,5 @@
   EXPECT_EQ(expected.size(), actual.size());
 
   for (auto row : actual)
-    EXPECT_NE(expected.end(),
-              std::find(expected.begin(), expected.end(), row.url()));
+    EXPECT_TRUE(base::Contains(expected, row.url()));
 }
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm
index e4ae0ac..c2eab2b 100644
--- a/chrome/browser/app_controller_mac.mm
+++ b/chrome/browser/app_controller_mac.mm
@@ -1106,7 +1106,16 @@
     [self setLastProfile:last_used_profile];
   }
 
-  _profileBookmarkMenuBridgeMap.erase(profilePath);
+  auto it = _profileBookmarkMenuBridgeMap.find(profilePath);
+  if (it != _profileBookmarkMenuBridgeMap.end() &&
+      (!base::FeatureList::IsEnabled(features::kDestroyProfileOnBrowserClose) ||
+       (it->second->GetProfile() && !isOffTheRecord))) {
+    // Clean up the dangling Profile* in |_profileBookmarkMenuBridgeMap|.
+    //
+    // No need to clean up when |isOffTheRecord|, because BookmarkMenuBridge
+    // always points to a non-OTR profile.
+    _profileBookmarkMenuBridgeMap.erase(it);
+  }
 }
 
 // Returns true if there is a modal window (either window- or application-
@@ -1742,17 +1751,27 @@
 
   _profilePrefRegistrar.reset();
 
-  // Rebuild the menus with the new profile. The bookmarks submenu is cached to
-  // avoid slowdowns when switching between profiles with large numbers of
-  // bookmarks. Before caching, store whether it is hidden, make the menu item
-  // visible, and restore its original hidden state after resetting the submenu.
-  // This works around an apparent AppKit bug where setting a *different* NSMenu
-  // submenu on a *hidden* menu item forces the item to become visible.
-  // See https://crbug.com/497813 for more details.
   NSMenuItem* bookmarkItem = [[NSApp mainMenu] itemWithTag:IDC_BOOKMARKS_MENU];
   BOOL hidden = [bookmarkItem isHidden];
-  [bookmarkItem setHidden:NO];
-  _bookmarkMenuBridge = nullptr;
+  if (profile != nullptr) {
+    // Rebuild the menus with the new profile. The bookmarks submenu is cached
+    // to avoid slowdowns when switching between profiles with large numbers of
+    // bookmarks. Before caching, store whether it is hidden, make the menu item
+    // visible, and restore its original hidden state after resetting the
+    // submenu. This works around an apparent AppKit bug where setting a
+    // *different* NSMenu submenu on a *hidden* menu item forces the item to
+    // become visible. See https://crbug.com/497813 for more details.
+    [bookmarkItem setHidden:NO];
+    _bookmarkMenuBridge = nullptr;
+  } else if (_bookmarkMenuBridge && !_isShuttingDown) {
+    DCHECK_EQ(_bookmarkMenuBridge->GetProfile(),
+              _lastProfile->GetOriginalProfile());
+    // |_bookmarkMenuBridge| always points to the original profile. So, no need
+    // to call OnProfileWillBeDestroyed() when the OTR profile is destroyed.
+    if (!_lastProfile->IsOffTheRecord()) {
+      _bookmarkMenuBridge->OnProfileWillBeDestroyed();
+    }
+  }
 
   _lastProfile = profile;
 
@@ -1760,14 +1779,17 @@
     return;
 
   auto& entry = _profileBookmarkMenuBridgeMap[profile->GetPath()];
-  if (!entry) {
+  if (!entry || !entry->GetProfile()) {
     // This creates a deep copy, but only the first 3 items in the root menu
     // are really wanted. This can probably be optimized, but lazy-loading of
     // the menu should reduce the impact in most flows.
     base::scoped_nsobject<NSMenu> submenu([[bookmarkItem submenu] copy]);
     [submenu setDelegate:nil];  // The delegate is also copied. Remove it.
 
-    entry = std::make_unique<BookmarkMenuBridge>(profile, submenu);
+    // The original profile outlives the OTR profile. Always create the bridge
+    // on the original profile, to prevent bugs WRT profile lifetime.
+    entry = std::make_unique<BookmarkMenuBridge>(profile->GetOriginalProfile(),
+                                                 submenu);
 
     // Clear bookmarks from the old profile.
     entry->ClearBookmarkMenu();
diff --git a/chrome/browser/app_mode/app_mode_utils.cc b/chrome/browser/app_mode/app_mode_utils.cc
index 45a33ef..37c2e76 100644
--- a/chrome/browser/app_mode/app_mode_utils.cc
+++ b/chrome/browser/app_mode/app_mode_utils.cc
@@ -8,6 +8,7 @@
 
 #include "base/check.h"
 #include "base/command_line.h"
+#include "base/containers/contains.h"
 #include "chrome/app/chrome_command_ids.h"
 #include "chrome/common/chrome_switches.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -51,15 +52,8 @@
 
   constexpr int kAllowedPopup[] = {IDC_CLOSE_TAB};
 
-  if (std::find(std::cbegin(kAllowed), std::cend(kAllowed), command_id) !=
-      std::cend(kAllowed))
-    return true;
-  if (is_popup &&
-      std::find(std::cbegin(kAllowedPopup), std::cend(kAllowedPopup),
-                command_id) != std::cend(kAllowedPopup))
-    return true;
-
-  return false;
+  return base::Contains(kAllowed, command_id) ||
+         (is_popup && base::Contains(kAllowedPopup, command_id));
 }
 
 bool IsRunningInAppMode() {
diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc
index 7f8a5bd..ddd4840 100644
--- a/chrome/browser/apps/guest_view/web_view_browsertest.cc
+++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc
@@ -4241,7 +4241,9 @@
   TestHelper("testScreenshotCapture", "web_view/shim", NO_TEST_SERVER);
 }
 
-IN_PROC_BROWSER_TEST_P(WebViewTest, WebViewInBackgroundPage) {
+// Test is disabled because it times out often.
+// http://crbug.com/403325
+IN_PROC_BROWSER_TEST_P(WebViewTest, DISABLED_WebViewInBackgroundPage) {
   ASSERT_TRUE(StartEmbeddedTestServer());
   ASSERT_TRUE(RunExtensionTest("platform_apps/web_view/background"))
       << message_;
@@ -5796,6 +5798,49 @@
             second_error_instance->GetStoragePartitionConfig());
 }
 
+// Ensure that the browser doesn't crash when a subframe in a <webview> is
+// navigated to an unknown scheme.  This used to be the case due to a mismatch
+// between the error page's SiteInstance and the origin to commit as calculated
+// in NavigationRequest.  See https://crbug.com/1366450.
+IN_PROC_BROWSER_TEST_F(SitePerProcessWebViewTest, ErrorPageInSubframe) {
+  ASSERT_TRUE(StartEmbeddedTestServer());
+
+  // Load an app with a <webview> guest that starts at a data: URL.
+  LoadAppWithGuest("web_view/simple");
+  ASSERT_TRUE(GetGuestRenderFrameHost());
+
+  scoped_refptr<content::SiteInstance> first_instance =
+      GetGuestRenderFrameHost()->GetSiteInstance();
+  EXPECT_TRUE(first_instance->IsGuest());
+
+  // Navigate <webview> to a page with an iframe.
+  const GURL first_url =
+      embedded_test_server()->GetURL("a.test", "/iframe.html");
+  {
+    content::TestFrameNavigationObserver load_observer(
+        GetGuestRenderFrameHost());
+    EXPECT_TRUE(ExecuteScript(GetGuestRenderFrameHost(),
+                              "location.href = '" + first_url.spec() + "';"));
+    load_observer.Wait();
+    EXPECT_TRUE(load_observer.last_navigation_succeeded());
+  }
+
+  // At this point, the guest's iframe should already be loaded.  Navigate
+  // it to an unknown scheme, which will result in an error. This shouldn't
+  // crash the browser.
+  content::RenderFrameHost* guest_subframe =
+      ChildFrameAt(GetGuestRenderFrameHost(), 0);
+  const GURL error_url = GURL("unknownscheme:foo");
+  {
+    content::TestFrameNavigationObserver load_observer(guest_subframe);
+    EXPECT_TRUE(ExecuteScript(guest_subframe,
+                              "location.href = '" + error_url.spec() + "';"));
+    load_observer.Wait();
+    EXPECT_FALSE(load_observer.last_navigation_succeeded());
+    EXPECT_TRUE(ChildFrameAt(GetGuestRenderFrameHost(), 0)->IsErrorDocument());
+  }
+}
+
 // Checks that a main frame navigation in a <webview> can swap
 // BrowsingInstances while staying in the same StoragePartition.
 IN_PROC_BROWSER_TEST_F(SitePerProcessWebViewTest, BrowsingInstanceSwap) {
diff --git a/chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc b/chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc
index bc01e76f..eeec8cd 100644
--- a/chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc
+++ b/chrome/browser/apps/guest_view/web_view_interactive_browsertest.cc
@@ -1334,7 +1334,16 @@
   EXPECT_TRUE(webview_button_not_focused_listener.WaitUntilSatisfied());
 }
 
-IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, KeyboardFocusSimple) {
+// Flaky on MacOSX, crbug.com/817066.
+// Flaky timeouts on Linux. https://crbug.com/709202
+// Flaky timeouts on Win. https://crbug.com/846695
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
+    BUILDFLAG(IS_WIN)
+#define MAYBE_KeyboardFocusSimple DISABLED_KeyboardFocusSimple
+#else
+#define MAYBE_KeyboardFocusSimple KeyboardFocusSimple
+#endif
+IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, MAYBE_KeyboardFocusSimple) {
   TestHelper("testKeyboardFocusSimple", "web_view/focus", NO_TEST_SERVER);
 
   EXPECT_EQ(embedder_web_contents()->GetFocusedFrame(),
diff --git a/chrome/browser/ash/accessibility/accessibility_manager.cc b/chrome/browser/ash/accessibility/accessibility_manager.cc
index 19eee970..4a3e807 100644
--- a/chrome/browser/ash/accessibility/accessibility_manager.cc
+++ b/chrome/browser/ash/accessibility/accessibility_manager.cc
@@ -32,6 +32,7 @@
 #include "base/memory/singleton.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/path_service.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
@@ -1254,9 +1255,8 @@
       pref_service->GetString(::prefs::kLanguagePreloadEngines);
   std::vector<base::StringPiece> preload_engines = base::SplitStringPiece(
       preload_engines_str, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
-  std::vector<base::StringPiece>::iterator it =
-      std::find(preload_engines.begin(), preload_engines.end(),
-                extension_ime_util::kBrailleImeEngineId);
+  std::vector<base::StringPiece>::iterator it = base::ranges::find(
+      preload_engines, extension_ime_util::kBrailleImeEngineId);
   bool is_enabled = (it != preload_engines.end());
   bool should_be_enabled =
       (IsSpokenFeedbackEnabled() && braille_display_connected_);
diff --git a/chrome/browser/ash/accessibility/dictation_browsertest.cc b/chrome/browser/ash/accessibility/dictation_browsertest.cc
index 486fc3a..4eec254 100644
--- a/chrome/browser/ash/accessibility/dictation_browsertest.cc
+++ b/chrome/browser/ash/accessibility/dictation_browsertest.cc
@@ -1687,7 +1687,13 @@
     DictationPumpkinInstallTest,
     ::testing::Values(speech::SpeechRecognitionType::kOnDevice));
 
-IN_PROC_BROWSER_TEST_P(DictationPumpkinInstallTest, WaitForInstall) {
+// TODO(crbug.com/1368843): Test is flaky on MSAN builds.
+#if defined(MEMORY_SANITIZER)
+#define MAYBE_WaitForInstall DISABLED_WaitForInstall
+#else
+#define MAYBE_WaitForInstall WaitForInstall
+#endif
+IN_PROC_BROWSER_TEST_P(DictationPumpkinInstallTest, MAYBE_WaitForInstall) {
   // Dictation will request a Pumpkin install when it starts up. Wait for
   // the install to succeed.
   WaitForInstallToSucceed();
diff --git a/chrome/browser/ash/app_mode/kiosk_cryptohome_remover.cc b/chrome/browser/ash/app_mode/kiosk_cryptohome_remover.cc
index 05e355c..ba18508 100644
--- a/chrome/browser/ash/app_mode/kiosk_cryptohome_remover.cc
+++ b/chrome/browser/ash/app_mode/kiosk_cryptohome_remover.cc
@@ -10,6 +10,7 @@
 #include "base/barrier_closure.h"
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "chrome/browser/ash/app_mode/pref_names.h"
 #include "chrome/browser/browser_process.h"
@@ -115,8 +116,7 @@
   AccountId active_account_id;
   if (active_user)
     active_account_id = active_user->GetAccountId();
-  if (std::find(account_ids.begin(), account_ids.end(), active_account_id) !=
-      account_ids.end()) {
+  if (base::Contains(account_ids, active_account_id)) {
     cryptohomes_barrier_closure = BarrierClosure(
         account_ids.size() - 1, base::BindOnce(&chrome::AttemptUserExit));
   }
diff --git a/chrome/browser/ash/app_mode/web_app/web_kiosk_browser_controller_ash_browsertest.cc b/chrome/browser/ash/app_mode/web_app/web_kiosk_browser_controller_ash_browsertest.cc
index e34d707..19830f84 100644
--- a/chrome/browser/ash/app_mode/web_app/web_kiosk_browser_controller_ash_browsertest.cc
+++ b/chrome/browser/ash/app_mode/web_app/web_kiosk_browser_controller_ash_browsertest.cc
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <algorithm>
 #include "base/callback_forward.h"
+#include "base/containers/contains.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
 #include "build/chromeos_buildflags.h"
@@ -176,9 +176,7 @@
     // The newly opened browser will be closed and removed from |BrowserList|.
     run_loop.Run();
 
-    EXPECT_EQ(
-        std::find(browser_list->begin(), browser_list->end(), new_browser),
-        browser_list->end());
+    EXPECT_FALSE(base::Contains(*browser_list, new_browser));
   }
 
   // Verify that accessibility settings can be opened as popup.
@@ -199,9 +197,7 @@
                                     ->app_session()
                                     ->GetSettingsBrowserForTesting();
     EXPECT_TRUE(settings_browser);
-    EXPECT_NE(
-        std::find(browser_list->begin(), browser_list->end(), settings_browser),
-        browser_list->end());
+    EXPECT_TRUE(base::Contains(*browser_list, settings_browser));
   }
 }
 
diff --git a/chrome/browser/ash/arc/adbd/arc_adbd_monitor_bridge_unittest.cc b/chrome/browser/ash/arc/adbd/arc_adbd_monitor_bridge_unittest.cc
index 6ad9d89..dc135905 100644
--- a/chrome/browser/ash/arc/adbd/arc_adbd_monitor_bridge_unittest.cc
+++ b/chrome/browser/ash/arc/adbd/arc_adbd_monitor_bridge_unittest.cc
@@ -13,6 +13,7 @@
 #include "ash/components/arc/test/fake_adbd_monitor_instance.h"
 #include "ash/components/arc/test/fake_arc_session.h"
 #include "ash/components/arc/test/test_browser_context.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
 #include "chromeos/ash/components/dbus/upstart/fake_upstart_client.h"
@@ -124,8 +125,8 @@
 
   const auto& ops = upstart_operations();
   // Find the STOP operation for the job.
-  auto it = std::find(ops.begin(), ops.end(),
-                      std::make_pair(std::string(kArcVmAdbdJobName), false));
+  auto it = base::ranges::find(
+      ops, std::make_pair(std::string(kArcVmAdbdJobName), false));
   ASSERT_NE(ops.end(), it);
   ++it;
   ASSERT_NE(ops.end(), it);
@@ -151,8 +152,8 @@
 
   const auto& ops = upstart_operations();
   // Find the STOP operation for the job.
-  auto it = std::find(ops.begin(), ops.end(),
-                      std::make_pair(std::string(kArcVmAdbdJobName), false));
+  auto it = base::ranges::find(
+      ops, std::make_pair(std::string(kArcVmAdbdJobName), false));
   EXPECT_EQ(ops.size(), 2u);
   ASSERT_NE(ops.end(), it);
   ++it;
@@ -177,8 +178,8 @@
 
   const auto& ops = upstart_operations();
   // Find the STOP operation for the job.
-  auto it = std::find(ops.begin(), ops.end(),
-                      std::make_pair(std::string(kArcVmAdbdJobName), false));
+  auto it = base::ranges::find(
+      ops, std::make_pair(std::string(kArcVmAdbdJobName), false));
   EXPECT_EQ(ops.size(), 1u);
   // The next operation must be START for the job.
   EXPECT_EQ(it->first, kArcVmAdbdJobName);
diff --git a/chrome/browser/ash/arc/fileapi/arc_documents_provider_util.cc b/chrome/browser/ash/arc/fileapi/arc_documents_provider_util.cc
index 3c76889..fc3afb7e 100644
--- a/chrome/browser/ash/arc/fileapi/arc_documents_provider_util.cc
+++ b/chrome/browser/ash/arc/fileapi/arc_documents_provider_util.cc
@@ -9,6 +9,7 @@
 
 #include "ash/components/arc/mojom/file_system.mojom.h"
 #include "base/containers/contains.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/escape.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
@@ -212,8 +213,7 @@
       base::FilePath::StringType preferred_extension;
       if (net::GetPreferredExtensionForMimeType(mime_type,
                                                 &preferred_extension)) {
-        auto iter = std::find(extensions.begin(), extensions.end(),
-                              preferred_extension);
+        auto iter = base::ranges::find(extensions, preferred_extension);
         if (iter == extensions.end()) {
           // This is unlikely to happen, but there is no guarantee.
           extensions.insert(extensions.begin(), preferred_extension);
diff --git a/chrome/browser/ash/arc/input_overlay/actions/action_move.cc b/chrome/browser/ash/arc/input_overlay/actions/action_move.cc
index d1655be..3e20aee5 100644
--- a/chrome/browser/ash/arc/input_overlay/actions/action_move.cc
+++ b/chrome/browser/ash/arc/input_overlay/actions/action_move.cc
@@ -5,7 +5,9 @@
 #include "chrome/browser/ash/arc/input_overlay/actions/action_move.h"
 
 #include "base/check_op.h"
+#include "base/containers/contains.h"
 #include "base/cxx17_backports.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/ash/arc/input_overlay/actions/action.h"
 #include "chrome/browser/ash/arc/input_overlay/touch_id_manager.h"
@@ -153,7 +155,7 @@
     DCHECK_EQ(labels_.size(), kActionMoveKeysSize);
     if (labels_.size() != kActionMoveKeysSize)
       return;
-    auto it = std::find(labels_.begin(), labels_.end(), action_label);
+    auto it = base::ranges::find(labels_, action_label);
     DCHECK(it != labels_.end());
     if (it == labels_.end())
       return;
@@ -273,8 +275,7 @@
                  << "}.";
       return false;
     }
-    auto it = std::find(keycodes.begin(), keycodes.end(), key);
-    if (it != keycodes.end()) {
+    if (base::Contains(keycodes, key)) {
       LOG(ERROR) << "Duplicated key {" << val
                  << "} for move key action: " << name_;
       return false;
@@ -419,7 +420,7 @@
                                  const gfx::Transform* rotation_transform,
                                  std::list<ui::TouchEvent>& rewritten_events) {
   auto keys = current_input_->keys();
-  auto it = std::find(keys.begin(), keys.end(), key_event->code());
+  auto it = base::ranges::find(keys, key_event->code());
   if (it == keys.end())
     return false;
 
diff --git a/chrome/browser/ash/arc/input_overlay/actions/input_element.cc b/chrome/browser/ash/arc/input_overlay/actions/input_element.cc
index fac404f..3f1eda4 100644
--- a/chrome/browser/ash/arc/input_overlay/actions/input_element.cc
+++ b/chrome/browser/ash/arc/input_overlay/actions/input_element.cc
@@ -4,10 +4,11 @@
 
 #include "chrome/browser/ash/arc/input_overlay/actions/input_element.h"
 
-#include <algorithm>
 #include <iterator>
 
+#include "base/containers/contains.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "ui/events/event_constants.h"
 #include "ui/events/keycodes/dom/keycode_converter.h"
 
@@ -161,7 +162,7 @@
   }
   if (input_sources_ == InputSource::IS_KEYBOARD) {
     for (auto key : input_element.keys()) {
-      if (std::find(keys_.begin(), keys_.end(), key) != keys_.end())
+      if (base::Contains(keys_, key))
         return true;
     }
     return false;
@@ -182,7 +183,7 @@
 }
 
 int InputElement::GetIndexOfKey(ui::DomCode key) const {
-  auto it = std::find(keys_.begin(), keys_.end(), key);
+  auto it = base::ranges::find(keys_, key);
   return it == keys_.end() ? -1 : it - keys_.begin();
 }
 
diff --git a/chrome/browser/ash/arc/intent_helper/arc_settings_service.cc b/chrome/browser/ash/arc/intent_helper/arc_settings_service.cc
index a913716b..58f48a8 100644
--- a/chrome/browser/ash/arc/intent_helper/arc_settings_service.cc
+++ b/chrome/browser/ash/arc/intent_helper/arc_settings_service.cc
@@ -102,7 +102,7 @@
 }
 
 bool IsProxyAutoDetectionConfigured(const base::Value& proxy_config_dict) {
-  ProxyConfigDictionary dict(proxy_config_dict.Clone());
+  ProxyConfigDictionary dict(proxy_config_dict.GetDict().Clone());
   ProxyPrefs::ProxyMode mode;
   dict.GetMode(&mode);
   return mode == ProxyPrefs::MODE_AUTO_DETECT;
diff --git a/chrome/browser/ash/arc/intent_helper/arc_settings_service_browsertest.cc b/chrome/browser/ash/arc/intent_helper/arc_settings_service_browsertest.cc
index 3bef356..e9cb7b6 100644
--- a/chrome/browser/ash/arc/intent_helper/arc_settings_service_browsertest.cc
+++ b/chrome/browser/ash/arc/intent_helper/arc_settings_service_browsertest.cc
@@ -192,7 +192,7 @@
 // all their extras match with |extras|.
 int CountProxyBroadcasts(
     const std::vector<FakeIntentHelperInstance::Broadcast>& broadcasts,
-    const std::vector<base::Value*> extras) {
+    const std::vector<base::Value::Dict*>& extras) {
   unsigned long count = 0;
   for (const FakeIntentHelperInstance::Broadcast& broadcast : broadcasts) {
     if (broadcast.action == kSetProxyBroadcastAction) {
@@ -300,7 +300,7 @@
   }
 
   void SetProxyConfigForNetworkService(const std::string& service_path,
-                                       base::Value proxy_config) {
+                                       base::Value::Dict proxy_config) {
     ProxyConfigDictionary proxy_config_dict(std::move(proxy_config));
     const ash::NetworkState* network =
         ash::NetworkHandler::Get()->network_state_handler()->GetNetworkState(
@@ -484,10 +484,10 @@
              base::Value(ProxyPrefs::kAutoDetectProxyModeName), nullptr);
   UpdatePolicy(policy);
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey(
-      "mode", base::Value(ProxyPrefs::kAutoDetectProxyModeName));
-  expected_proxy_config.SetKey("pacUrl", base::Value("http://wpad/wpad.dat"));
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set("mode",
+                            base::Value(ProxyPrefs::kAutoDetectProxyModeName));
+  expected_proxy_config.Set("pacUrl", base::Value("http://wpad/wpad.dat"));
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_proxy_config}),
             1);
@@ -502,10 +502,10 @@
              policy::POLICY_SOURCE_CLOUD, base::Value(kONCPolicy), nullptr);
   UpdatePolicy(policy);
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey(
-      "mode", base::Value(ProxyPrefs::kPacScriptProxyModeName));
-  expected_proxy_config.SetKey("pacUrl", base::Value(kONCPacUrl));
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set("mode",
+                            base::Value(ProxyPrefs::kPacScriptProxyModeName));
+  expected_proxy_config.Set("pacUrl", base::Value(kONCPacUrl));
 
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_proxy_config}),
@@ -524,10 +524,10 @@
              policy::POLICY_SOURCE_CLOUD, base::Value(kONCPolicy), nullptr);
   UpdatePolicy(policy);
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey(
-      "mode", base::Value(ProxyPrefs::kPacScriptProxyModeName));
-  expected_proxy_config.SetKey("pacUrl", base::Value(kONCPacUrl));
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set("mode",
+                            base::Value(ProxyPrefs::kPacScriptProxyModeName));
+  expected_proxy_config.Set("pacUrl", base::Value(kONCPacUrl));
 
   // Set the user preference to indicate that ARC should connect to
   // System-proxy.
@@ -536,11 +536,11 @@
       base::Value("local_proxy:3128"));
   RunUntilIdle();
 
-  base::Value expected_proxy_config_system_proxy(base::Value::Type::DICTIONARY);
-  expected_proxy_config_system_proxy.SetKey(
+  base::Value::Dict expected_proxy_config_system_proxy;
+  expected_proxy_config_system_proxy.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_proxy_config_system_proxy.SetKey("host", base::Value("local_proxy"));
-  expected_proxy_config_system_proxy.SetIntKey("port", 3128);
+  expected_proxy_config_system_proxy.Set("host", base::Value("local_proxy"));
+  expected_proxy_config_system_proxy.Set("port", 3128);
 
   // Unset the System-proxy preference to verify that ARC syncs proxy configs
   // correctly when System-proxy is disabled.
@@ -576,9 +576,9 @@
       base::Value("local_proxy:3128"));
   RunUntilIdle();
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey("mode",
-                               base::Value(ProxyPrefs::kDirectProxyModeName));
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set("mode",
+                            base::Value(ProxyPrefs::kDirectProxyModeName));
 
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_proxy_config}),
@@ -599,9 +599,8 @@
              base::Value("proxy:8888"), nullptr);
   UpdatePolicy(policy);
 
-  base::Value proxy_config(base::Value::Type::DICTIONARY);
-  proxy_config.SetKey("mode",
-                      base::Value(ProxyPrefs::kAutoDetectProxyModeName));
+  base::Value::Dict proxy_config;
+  proxy_config.Set("mode", base::Value(ProxyPrefs::kAutoDetectProxyModeName));
   ProxyConfigDictionary proxy_config_dict(std::move(proxy_config));
   const ash::NetworkState* network =
       ash::NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
@@ -609,11 +608,11 @@
   ash::proxy_config::SetProxyConfigForNetwork(proxy_config_dict, *network);
   RunUntilIdle();
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey(
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_proxy_config.SetKey("host", base::Value("proxy"));
-  expected_proxy_config.SetKey("port", base::Value(8888));
+  expected_proxy_config.Set("host", base::Value("proxy"));
+  expected_proxy_config.Set("port", base::Value(8888));
 
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_proxy_config}),
@@ -623,17 +622,17 @@
 IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, ProxyPrefTest) {
   fake_intent_helper_instance_->clear_broadcasts();
 
-  base::Value proxy_config(base::Value::Type::DICTIONARY);
-  proxy_config.SetKey("mode", base::Value(ProxyPrefs::kPacScriptProxyModeName));
-  proxy_config.SetKey("pac_url", base::Value("http://proxy"));
-  browser()->profile()->GetPrefs()->Set(proxy_config::prefs::kProxy,
-                                        proxy_config);
+  base::Value::Dict proxy_config;
+  proxy_config.Set("mode", base::Value(ProxyPrefs::kPacScriptProxyModeName));
+  proxy_config.Set("pac_url", base::Value("http://proxy"));
+  browser()->profile()->GetPrefs()->SetDict(proxy_config::prefs::kProxy,
+                                            std::move(proxy_config));
   RunUntilIdle();
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey(
-      "mode", base::Value(ProxyPrefs::kPacScriptProxyModeName));
-  expected_proxy_config.SetKey("pacUrl", base::Value("http://proxy"));
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set("mode",
+                            base::Value(ProxyPrefs::kPacScriptProxyModeName));
+  expected_proxy_config.Set("pacUrl", base::Value("http://proxy"));
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_proxy_config}),
             1);
@@ -642,18 +641,17 @@
 IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, DefaultNetworkProxyConfigTest) {
   fake_intent_helper_instance_->clear_broadcasts();
 
-  base::Value proxy_config(base::Value::Type::DICTIONARY);
-  proxy_config.SetKey("mode",
-                      base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  proxy_config.SetKey("server", base::Value("proxy:8080"));
+  base::Value::Dict proxy_config;
+  proxy_config.Set("mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
+  proxy_config.Set("server", base::Value("proxy:8080"));
   SetProxyConfigForNetworkService(kDefaultServicePath, std::move(proxy_config));
   RunUntilIdle();
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey(
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_proxy_config.SetKey("host", base::Value("proxy"));
-  expected_proxy_config.SetKey("port", base::Value(8080));
+  expected_proxy_config.Set("host", base::Value("proxy"));
+  expected_proxy_config.Set("port", base::Value(8080));
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_proxy_config}),
             1);
@@ -672,21 +670,20 @@
 
   const char kArcProxyBypassList[] = "test1.org,test2.org";
 
-  base::Value proxy_config(base::Value::Type::DICTIONARY);
-  proxy_config.SetKey("mode",
-                      base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  proxy_config.SetKey("server", base::Value("proxy:8080"));
-  proxy_config.SetKey("bypass_list",
-                      base::Value(chrome_proxy_bypass_rules.ToString()));
+  base::Value::Dict proxy_config;
+  proxy_config.Set("mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
+  proxy_config.Set("server", base::Value("proxy:8080"));
+  proxy_config.Set("bypass_list",
+                   base::Value(chrome_proxy_bypass_rules.ToString()));
   SetProxyConfigForNetworkService(kDefaultServicePath, std::move(proxy_config));
   RunUntilIdle();
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey(
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_proxy_config.SetKey("host", base::Value("proxy"));
-  expected_proxy_config.SetKey("port", base::Value(8080));
-  expected_proxy_config.SetKey("bypassList", base::Value(kArcProxyBypassList));
+  expected_proxy_config.Set("host", base::Value("proxy"));
+  expected_proxy_config.Set("port", base::Value(8080));
+  expected_proxy_config.Set("bypassList", base::Value(kArcProxyBypassList));
 
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_proxy_config}),
@@ -697,30 +694,29 @@
   ConnectWifiNetworkService(kWifi0ServicePath, kWifi0Guid, kWifi0Ssid);
   fake_intent_helper_instance_->clear_broadcasts();
   // Set proxy confog for default network.
-  base::Value default_proxy_config(base::Value::Type::DICTIONARY);
-  default_proxy_config.SetKey(
-      "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  default_proxy_config.SetKey("server", base::Value("default.proxy.test:8080"));
+  base::Value::Dict default_proxy_config;
+  default_proxy_config.Set("mode",
+                           base::Value(ProxyPrefs::kFixedServersProxyModeName));
+  default_proxy_config.Set("server", base::Value("default.proxy.test:8080"));
   SetProxyConfigForNetworkService(kDefaultServicePath,
                                   std::move(default_proxy_config));
   RunUntilIdle();
 
   // Set proxy confog for WI-FI network.
-  base::Value wifi_proxy_config(base::Value::Type::DICTIONARY);
-  wifi_proxy_config.SetKey("mode",
-                           base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  wifi_proxy_config.SetKey("server", base::Value("wifi.proxy.test:8080"));
+  base::Value::Dict wifi_proxy_config;
+  wifi_proxy_config.Set("mode",
+                        base::Value(ProxyPrefs::kFixedServersProxyModeName));
+  wifi_proxy_config.Set("server", base::Value("wifi.proxy.test:8080"));
   SetProxyConfigForNetworkService(kWifi0ServicePath,
                                   std::move(wifi_proxy_config));
   RunUntilIdle();
 
   // Observe default network proxy config broadcast.
-  base::Value expected_default_proxy_config(base::Value::Type::DICTIONARY);
-  expected_default_proxy_config.SetKey(
+  base::Value::Dict expected_default_proxy_config;
+  expected_default_proxy_config.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_default_proxy_config.SetKey("host",
-                                       base::Value("default.proxy.test"));
-  expected_default_proxy_config.SetKey("port", base::Value(8080));
+  expected_default_proxy_config.Set("host", base::Value("default.proxy.test"));
+  expected_default_proxy_config.Set("port", base::Value(8080));
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_default_proxy_config}),
             1);
@@ -730,11 +726,11 @@
   DisconnectNetworkService(kDefaultServicePath);
 
   // Observe WI-FI network proxy config broadcast.
-  base::Value expected_wifi_proxy_config(base::Value::Type::DICTIONARY);
-  expected_wifi_proxy_config.SetKey(
+  base::Value::Dict expected_wifi_proxy_config;
+  expected_wifi_proxy_config.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_wifi_proxy_config.SetKey("host", base::Value("wifi.proxy.test"));
-  expected_wifi_proxy_config.SetKey("port", base::Value(8080));
+  expected_wifi_proxy_config.Set("host", base::Value("wifi.proxy.test"));
+  expected_wifi_proxy_config.Set("port", base::Value(8080));
 
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_wifi_proxy_config}),
@@ -769,14 +765,14 @@
              nullptr);
   UpdatePolicy(policy);
 
-  base::Value expected_proxy_config(base::Value::Type::DICTIONARY);
-  expected_proxy_config.SetKey(
+  base::Value::Dict expected_proxy_config;
+  expected_proxy_config.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_proxy_config.SetKey("host", base::Value("proxy"));
-  expected_proxy_config.SetKey("port", base::Value(5000));
+  expected_proxy_config.Set("host", base::Value("proxy"));
+  expected_proxy_config.Set("port", base::Value(5000));
 
-  base::Value expected_proxy_config_direct(base::Value::Type::DICTIONARY);
-  expected_proxy_config_direct.SetKey(
+  base::Value::Dict expected_proxy_config_direct;
+  expected_proxy_config_direct.Set(
       "mode", base::Value(ProxyPrefs::kDirectProxyModeName));
 
   EXPECT_EQ(CountProxyBroadcasts(
@@ -790,10 +786,10 @@
   // Connect to wifi0 with appliead user ONC policy.
   ConnectWifiNetworkService(kWifi0ServicePath, kWifi0Guid, kWifi0Ssid);
 
-  expected_proxy_config.SetKey(
+  expected_proxy_config.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_proxy_config.SetKey("host", base::Value("proxy-n300"));
-  expected_proxy_config.SetKey("port", base::Value(3000));
+  expected_proxy_config.Set("host", base::Value("proxy-n300"));
+  expected_proxy_config.Set("port", base::Value(3000));
 
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
                                  {&expected_proxy_config}),
@@ -805,18 +801,18 @@
 IN_PROC_BROWSER_TEST_F(ArcSettingsServiceTest, ProxySyncUnmanagedDevice) {
   fake_intent_helper_instance_->clear_broadcasts();
 
-  std::vector<base::Value*> expected_proxy_configs;
-  base::Value expected_proxy_config1(base::Value::Type::DICTIONARY);
-  expected_proxy_config1.SetKey(
+  std::vector<base::Value::Dict*> expected_proxy_configs;
+  base::Value::Dict expected_proxy_config1;
+  expected_proxy_config1.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_proxy_config1.SetKey("host", base::Value("proxy"));
-  expected_proxy_config1.SetKey("port", base::Value(1111));
+  expected_proxy_config1.Set("host", base::Value("proxy"));
+  expected_proxy_config1.Set("port", base::Value(1111));
 
-  base::Value expected_proxy_config2(base::Value::Type::DICTIONARY);
-  expected_proxy_config2.SetKey(
+  base::Value::Dict expected_proxy_config2;
+  expected_proxy_config2.Set(
       "mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  expected_proxy_config2.SetKey("host", base::Value("proxy"));
-  expected_proxy_config2.SetKey("port", base::Value(2222));
+  expected_proxy_config2.Set("host", base::Value("proxy"));
+  expected_proxy_config2.Set("port", base::Value(2222));
 
   // The number of times to sync is randomly chosen. The only constraint is that
   // it has to be larger than two, as the proxy settings will be synced once at
@@ -824,19 +820,19 @@
   int proxy_sync_count = 10;
 
   for (int i = 0; i < proxy_sync_count; i += 2) {
-    base::Value proxy_config1(base::Value::Type::DICTIONARY);
-    proxy_config1.SetKey("mode",
-                         base::Value(ProxyPrefs::kFixedServersProxyModeName));
-    proxy_config1.SetKey("server", base::Value("proxy:1111"));
+    base::Value::Dict proxy_config1;
+    proxy_config1.Set("mode",
+                      base::Value(ProxyPrefs::kFixedServersProxyModeName));
+    proxy_config1.Set("server", base::Value("proxy:1111"));
     SetProxyConfigForNetworkService(kDefaultServicePath,
                                     std::move(proxy_config1));
     expected_proxy_configs.push_back(&expected_proxy_config1);
     RunUntilIdle();
 
-    base::Value proxy_config2(base::Value::Type::DICTIONARY);
-    proxy_config2.SetKey("mode",
-                         base::Value(ProxyPrefs::kFixedServersProxyModeName));
-    proxy_config2.SetKey("server", base::Value("proxy:2222"));
+    base::Value::Dict proxy_config2;
+    proxy_config2.Set("mode",
+                      base::Value(ProxyPrefs::kFixedServersProxyModeName));
+    proxy_config2.Set("server", base::Value("proxy:2222"));
     SetProxyConfigForNetworkService(kDefaultServicePath,
                                     std::move(proxy_config2));
     expected_proxy_configs.push_back(&expected_proxy_config2);
@@ -853,11 +849,11 @@
 
   // Set the proxy config to use auto-discovery. There's no PAC URL set via DHCP
   // so the URL "http://wpad/wpad.dat" set via DNS will be propagated to ARC.
-  base::Value proxy_config_wpad(base::Value::Type::DICTIONARY);
-  proxy_config_wpad.SetKey("mode",
-                           base::Value(ProxyPrefs::kAutoDetectProxyModeName));
-  browser()->profile()->GetPrefs()->Set(proxy_config::prefs::kProxy,
-                                        proxy_config_wpad);
+  base::Value::Dict proxy_config_wpad;
+  proxy_config_wpad.Set("mode",
+                        base::Value(ProxyPrefs::kAutoDetectProxyModeName));
+  browser()->profile()->GetPrefs()->SetDict(proxy_config::prefs::kProxy,
+                                            std::move(proxy_config_wpad));
 
   RunUntilIdle();
   const char kWebProxyAutodetectionUrl[] = "www.proxyurl.com:443";
@@ -867,11 +863,12 @@
 
   // Set the WPAD DHCP URL. This should now have precedence over the PAC URL set
   // via DNS.
-  base::Value wpad_config(base::Value::Type::DICTIONARY);
-  wpad_config.SetKey(shill::kWebProxyAutoDiscoveryUrlProperty,
-                     base::Value(kWebProxyAutodetectionUrl));
+  base::Value::Dict wpad_config;
+  wpad_config.Set(shill::kWebProxyAutoDiscoveryUrlProperty,
+                  base::Value(kWebProxyAutodetectionUrl));
   const std::string kIPConfigPath = "test_ip_config";
-  ip_config_client->AddIPConfig(kIPConfigPath, wpad_config);
+  ip_config_client->AddIPConfig(kIPConfigPath,
+                                base::Value(std::move(wpad_config)));
 
   ash::ShillServiceClient::TestInterface* service_test =
       ash::ShillServiceClient::Get()->GetTestInterface();
@@ -882,27 +879,27 @@
   RunUntilIdle();
 
   // Remove the proxy.
-  base::Value proxy_config_direct(base::Value::Type::DICTIONARY);
-  proxy_config_direct.SetKey("mode",
-                             base::Value(ProxyPrefs::kDirectProxyModeName));
-  browser()->profile()->GetPrefs()->Set(proxy_config::prefs::kProxy,
-                                        proxy_config_direct);
+  base::Value::Dict proxy_config_direct;
+  proxy_config_direct.Set("mode",
+                          base::Value(ProxyPrefs::kDirectProxyModeName));
+  browser()->profile()->GetPrefs()->SetDict(proxy_config::prefs::kProxy,
+                                            std::move(proxy_config_direct));
 
   RunUntilIdle();
-  base::Value expected_proxy_config_wpad_dns(base::Value::Type::DICTIONARY);
-  expected_proxy_config_wpad_dns.SetKey(
+  base::Value::Dict expected_proxy_config_wpad_dns;
+  expected_proxy_config_wpad_dns.Set(
       "mode", base::Value(ProxyPrefs::kAutoDetectProxyModeName));
-  expected_proxy_config_wpad_dns.SetKey("pacUrl",
-                                        base::Value("http://wpad/wpad.dat"));
+  expected_proxy_config_wpad_dns.Set("pacUrl",
+                                     base::Value("http://wpad/wpad.dat"));
 
-  base::Value expected_proxy_config_wpad_dhcp(base::Value::Type::DICTIONARY);
-  expected_proxy_config_wpad_dhcp.SetKey(
+  base::Value::Dict expected_proxy_config_wpad_dhcp;
+  expected_proxy_config_wpad_dhcp.Set(
       "mode", base::Value(ProxyPrefs::kAutoDetectProxyModeName));
-  expected_proxy_config_wpad_dhcp.SetKey(
-      "pacUrl", base::Value(kWebProxyAutodetectionUrl));
+  expected_proxy_config_wpad_dhcp.Set("pacUrl",
+                                      base::Value(kWebProxyAutodetectionUrl));
 
-  base::Value expected_proxy_config_direct(base::Value::Type::DICTIONARY);
-  expected_proxy_config_direct.SetKey(
+  base::Value::Dict expected_proxy_config_direct;
+  expected_proxy_config_direct.Set(
       "mode", base::Value(ProxyPrefs::kDirectProxyModeName));
 
   EXPECT_EQ(CountProxyBroadcasts(fake_intent_helper_instance_->broadcasts(),
diff --git a/chrome/browser/ash/camera_mic/vm_camera_mic_manager_unittest.cc b/chrome/browser/ash/camera_mic/vm_camera_mic_manager_unittest.cc
index 1cf6012a..336a12c 100644
--- a/chrome/browser/ash/camera_mic/vm_camera_mic_manager_unittest.cc
+++ b/chrome/browser/ash/camera_mic/vm_camera_mic_manager_unittest.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/ash/camera_mic/vm_camera_mic_manager.h"
 
-#include <algorithm>
 #include <memory>
 #include <utility>
 
@@ -19,6 +18,7 @@
 #include "ash/system/unified/unified_system_tray.h"
 #include "ash/test/ash_test_helper.h"
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/containers/flat_map.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/time/time.h"
@@ -97,12 +97,6 @@
   std::vector<NotificationType> notification_expectations;
 };
 
-template <typename T, typename V>
-bool contains(const T& container, const V& value) {
-  return std::find(container.begin(), container.end(), value) !=
-         container.end();
-}
-
 // Check the visibility of privacy indicators in all displays.
 void ExpectPrivacyIndicatorsVisible(bool visible) {
   for (ash::RootWindowController* root_window_controller :
@@ -327,13 +321,14 @@
 
   for (auto device : {kCamera, kMic}) {
     EXPECT_EQ(vm_camera_mic_manager_->IsDeviceActive(device),
-              contains(GetParam().device_expectations, device));
+              base::Contains(GetParam().device_expectations, device));
   }
 
   for (auto notification :
        {kCameraNotification, kMicNotification, kCameraAndMicNotification}) {
-    EXPECT_EQ(vm_camera_mic_manager_->IsNotificationActive(notification),
-              contains(GetParam().notification_expectations, notification));
+    EXPECT_EQ(
+        vm_camera_mic_manager_->IsNotificationActive(notification),
+        base::Contains(GetParam().notification_expectations, notification));
   }
 }
 
diff --git a/chrome/browser/ash/child_accounts/edu_coexistence_tos_store_utils.cc b/chrome/browser/ash/child_accounts/edu_coexistence_tos_store_utils.cc
index 940c2b3..d787f167 100644
--- a/chrome/browser/ash/child_accounts/edu_coexistence_tos_store_utils.cc
+++ b/chrome/browser/ash/child_accounts/edu_coexistence_tos_store_utils.cc
@@ -43,12 +43,11 @@
 
 void UpdateAcceptedToSVersionPref(Profile* profile,
                                   const UserConsentInfo& user_consent_info) {
-  DictionaryPrefUpdate update(profile->GetPrefs(),
+  ScopedDictPrefUpdate update(profile->GetPrefs(),
                               prefs::kEduCoexistenceToSAcceptedVersion);
-  base::Value* dict = update.Get();
 
-  dict->SetStringPath(user_consent_info.edu_account_gaia_id,
-                      user_consent_info.edu_coexistence_tos_version);
+  update->SetByDottedPath(user_consent_info.edu_account_gaia_id,
+                          user_consent_info.edu_coexistence_tos_version);
 }
 
 void SetUserConsentInfoListForProfile(
diff --git a/chrome/browser/ash/child_accounts/family_user_parental_control_metrics_unittest.cc b/chrome/browser/ash/child_accounts/family_user_parental_control_metrics_unittest.cc
index 335c3fc..64924bc 100644
--- a/chrome/browser/ash/child_accounts/family_user_parental_control_metrics_unittest.cc
+++ b/chrome/browser/ash/child_accounts/family_user_parental_control_metrics_unittest.cc
@@ -264,9 +264,8 @@
                                            base::Hours(1), base::Time::Now()));
 
     builder.SetResetTime(6, 0);
-    DictionaryPrefUpdate update(GetPrefs(), prefs::kPerAppTimeLimitsPolicy);
-    base::Value* value = update.Get();
-    *value = builder.value().Clone();
+    GetPrefs()->SetDict(prefs::kPerAppTimeLimitsPolicy,
+                        builder.value().GetDict().Clone());
   }
 
   histogram_tester_.ExpectBucketCount(
diff --git a/chrome/browser/ash/child_accounts/time_limits/app_time_controller_unittest.cc b/chrome/browser/ash/child_accounts/time_limits/app_time_controller_unittest.cc
index 18fd0f4..5e0ad4a 100644
--- a/chrome/browser/ash/child_accounts/time_limits/app_time_controller_unittest.cc
+++ b/chrome/browser/ash/child_accounts/time_limits/app_time_controller_unittest.cc
@@ -449,10 +449,8 @@
     builder.AddAppLimit(kApp2, AppLimit(AppRestriction::kTimeLimit,
                                         kOneHour / 2, base::Time::Now()));
     builder.SetResetTime(6, 0);
-    DictionaryPrefUpdate update(profile().GetPrefs(),
-                                prefs::kPerAppTimeLimitsPolicy);
-    base::Value* value = update.Get();
-    *value = builder.value().Clone();
+    profile().GetPrefs()->SetDict(prefs::kPerAppTimeLimitsPolicy,
+                                  builder.value().GetDict().Clone());
   }
 
   // If there was no valid last reset time stored in user pref,
@@ -533,10 +531,8 @@
     builder.AddAppLimit(absent_app, app_limit);
     builder.AddAppLimit(kApp2, blocked_app);
     builder.SetResetTime(6, 0);
-    DictionaryPrefUpdate update(profile().GetPrefs(),
-                                prefs::kPerAppTimeLimitsPolicy);
-    base::Value* value = update.Get();
-    *value = builder.value().Clone();
+    profile().GetPrefs()->SetDict(prefs::kPerAppTimeLimitsPolicy,
+                                  builder.value().GetDict().Clone());
   }
 
   // Enagagement is recorded at the beginning of the session when
diff --git a/chrome/browser/ash/crosapi/network_settings_service_ash.cc b/chrome/browser/ash/crosapi/network_settings_service_ash.cc
index 03767366..389bbed 100644
--- a/chrome/browser/ash/crosapi/network_settings_service_ash.cc
+++ b/chrome/browser/ash/crosapi/network_settings_service_ash.cc
@@ -126,9 +126,10 @@
   pref_service->Set(ash::prefs::kLacrosProxyControllingExtension,
                     std::move(proxy_extension));
 
-  pref_service->Set(
-      proxy_config::prefs::kProxy,
-      CrosapiProxyToProxyConfig(std::move(proxy_config)).GetDictionary());
+  pref_service->SetDict(proxy_config::prefs::kProxy,
+                        CrosapiProxyToProxyConfig(std::move(proxy_config))
+                            .GetDictionary()
+                            .Clone());
 }
 
 void NetworkSettingsServiceAsh::ClearExtensionProxy() {
diff --git a/chrome/browser/ash/crosapi/network_settings_service_ash_browsertest.cc b/chrome/browser/ash/crosapi/network_settings_service_ash_browsertest.cc
index 6be1bc0..89fc1a5f 100644
--- a/chrome/browser/ash/crosapi/network_settings_service_ash_browsertest.cc
+++ b/chrome/browser/ash/crosapi/network_settings_service_ash_browsertest.cc
@@ -210,7 +210,8 @@
  protected:
   // This method simulates sending an extension controlled proxy config from
   // Lacros to Ash.
-  void SendExtensionProxyConfig(base::Value proxy_dict, bool can_be_disabled) {
+  void SendExtensionProxyConfig(base::Value::Dict proxy_dict,
+                                bool can_be_disabled) {
     ProxyConfigDictionary proxy_config_dict(std::move(proxy_dict));
     auto proxy_config =
         crosapi::ProxyConfigToCrosapiProxy(&proxy_config_dict,
@@ -248,8 +249,8 @@
   ASSERT_TRUE(extension_proxy_pref);
 
   // Emulate receiving an initial proxy config from lacros-chrome.
-  base::Value proxy_config = ProxyConfigDictionary::CreatePacScript(
-      kPacUrl, /*is_pac_mandatory=*/true);
+  base::Value::Dict proxy_config =
+      ProxyConfigDictionary::CreatePacScript(kPacUrl, /*pac_mandatory=*/true);
   SendExtensionProxyConfig(proxy_config.Clone(),
                            /*can_be_disabled=*/true);
   EXPECT_EQ(*(proxy_pref->GetValue()), proxy_config);
@@ -286,8 +287,8 @@
 // via policy and then verifies that the direct proxy is applied.
 IN_PROC_BROWSER_TEST_F(NetworkSettingsServiceAshExtensionTest,
                        UserPolicyHasPrecedence) {
-  base::Value pac_proxy = ProxyConfigDictionary::CreatePacScript(
-      kPacUrl, /*is_pac_mandatory=*/true);
+  base::Value::Dict pac_proxy =
+      ProxyConfigDictionary::CreatePacScript(kPacUrl, /*pac_mandatory=*/true);
   SendExtensionProxyConfig(pac_proxy.Clone(),
                            /*can_be_disabled=*/true);
   // Set proxy by policy.
@@ -323,7 +324,7 @@
 
   ProxyConfigDictionary proxy_config_dict(
       ProxyConfigDictionary::CreatePacScript(kPacUrl,
-                                             /*is_pac_mandatory=*/true));
+                                             /*pac_mandatory=*/true));
   auto proxy_config = crosapi::ProxyConfigToCrosapiProxy(&proxy_config_dict,
                                                          /*wpad_url=*/GURL(""));
   proxy_config->extension = crosapi::mojom::ExtensionControllingProxy::New();
@@ -350,8 +351,8 @@
   {
     base::RunLoop run_loop;
     observer_->SetQuitClosure(run_loop.QuitClosure());
-    base::Value pac_proxy = ProxyConfigDictionary::CreatePacScript(
-        kPacUrl, /*is_pac_mandatory=*/true);
+    base::Value::Dict pac_proxy =
+        ProxyConfigDictionary::CreatePacScript(kPacUrl, /*pac_mandatory=*/true);
     SendExtensionProxyConfig(pac_proxy.Clone(),
                              /*can_be_disabled=*/true);
     // Wait for the `observer` to get the proxy
@@ -379,8 +380,8 @@
   {
     base::RunLoop run_loop;
     observer_->SetQuitClosure(run_loop.QuitClosure());
-    base::Value pac_proxy = ProxyConfigDictionary::CreatePacScript(
-        kPacUrl, /*is_pac_mandatory=*/true);
+    base::Value::Dict pac_proxy =
+        ProxyConfigDictionary::CreatePacScript(kPacUrl, /*pac_mandatory=*/true);
     SendExtensionProxyConfig(pac_proxy.Clone(),
                              /*can_be_disabled=*/true);
     // Wait for the `observer` to get the proxy
diff --git a/chrome/browser/ash/crosapi/network_settings_translation_unittest.cc b/chrome/browser/ash/crosapi/network_settings_translation_unittest.cc
index 0bac62d..5541b9d 100644
--- a/chrome/browser/ash/crosapi/network_settings_translation_unittest.cc
+++ b/chrome/browser/ash/crosapi/network_settings_translation_unittest.cc
@@ -14,12 +14,13 @@
 
 constexpr char kPacUrl[] = "http://pac.pac/";
 
-base::Value GetPacProxyConfig(const std::string& pac_url, bool pac_mandatory) {
+base::Value::Dict GetPacProxyConfig(const std::string& pac_url,
+                                    bool pac_mandatory) {
   return ProxyConfigDictionary::CreatePacScript(pac_url, pac_mandatory);
 }
 
-base::Value GetManualProxyConfig(const std::string& proxy_servers,
-                                 const std::string& bypass_list) {
+base::Value::Dict GetManualProxyConfig(const std::string& proxy_servers,
+                                       const std::string& bypass_list) {
   return ProxyConfigDictionary::CreateFixedServers(proxy_servers, bypass_list);
 }
 
diff --git a/chrome/browser/ash/crosapi/translate_crosapi_to_proxy_config.cc b/chrome/browser/ash/crosapi/translate_crosapi_to_proxy_config.cc
index e1aef10..5d69478 100644
--- a/chrome/browser/ash/crosapi/translate_crosapi_to_proxy_config.cc
+++ b/chrome/browser/ash/crosapi/translate_crosapi_to_proxy_config.cc
@@ -68,7 +68,7 @@
 
 // See //net/docs/proxy.md and net::ProxyConfig::ProxyRules::ParseFromString()
 // for translation rules.
-base::Value TranslateManualProxySettings(
+base::Value::Dict TranslateManualProxySettings(
     crosapi::mojom::ProxySettingsManualPtr proxy_settings) {
   std::vector<std::string> proxy_server_specs;
   for (auto const& proxy : proxy_settings->http_proxies) {
@@ -89,7 +89,7 @@
       base::JoinString(proxy_settings->exclude_domains, ";"));
 }
 
-base::Value TranslatePacProxySettings(
+base::Value::Dict TranslatePacProxySettings(
     crosapi::mojom::ProxySettingsPacPtr proxy_settings) {
   if (!proxy_settings->pac_url.is_valid())
     return ProxyConfigDictionary::CreateDirect();
@@ -97,7 +97,7 @@
                                                 proxy_settings->pac_mandatory);
 }
 
-base::Value TranslateWpadProxySettings(
+base::Value::Dict TranslateWpadProxySettings(
     crosapi::mojom::ProxySettingsWpadPtr proxy_settings) {
   return ProxyConfigDictionary::CreateAutoDetect();
 }
diff --git a/chrome/browser/ash/guest_os/guest_os_share_path.cc b/chrome/browser/ash/guest_os/guest_os_share_path.cc
index f969e70..2771c30 100644
--- a/chrome/browser/ash/guest_os/guest_os_share_path.cc
+++ b/chrome/browser/ash/guest_os/guest_os_share_path.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/containers/contains.h"
 #include "base/files/file_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/task/thread_pool.h"
 #include "chrome/browser/ash/arc/session/arc_session_manager.h"
 #include "chrome/browser/ash/crostini/crostini_util.h"
@@ -142,7 +143,7 @@
                  << " for VM " << vm_name;
     return;
   }
-  auto it = std::find(found->begin(), found->end(), base::Value(vm_name));
+  auto it = base::ranges::find(*found, base::Value(vm_name));
   if (it == found->end()) {
     LOG(WARNING) << "VM not in prefs to unshare path " << path.value()
                  << " for VM " << vm_name;
diff --git a/chrome/browser/ash/guest_os/public/guest_os_mount_provider_registry_unittest.cc b/chrome/browser/ash/guest_os/public/guest_os_mount_provider_registry_unittest.cc
index 984d66b7..36308de 100644
--- a/chrome/browser/ash/guest_os/public/guest_os_mount_provider_registry_unittest.cc
+++ b/chrome/browser/ash/guest_os/public/guest_os_mount_provider_registry_unittest.cc
@@ -4,9 +4,9 @@
 
 #include "chrome/browser/ash/guest_os/public/guest_os_mount_provider_registry.h"
 
-#include <algorithm>
 #include <vector>
 
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/ash/guest_os/guest_os_test_helpers.h"
 #include "chrome/browser/ash/guest_os/public/guest_os_mount_provider.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -24,7 +24,7 @@
     ids_.push_back(id);
   }
   void OnUnregistered(Id id) override {
-    auto pos = std::find(ids_.begin(), ids_.end(), id);
+    auto pos = base::ranges::find(ids_, id);
     if (pos != ids_.end()) {
       ids_.erase(pos);
     }
diff --git a/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc b/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc
index 2b10e67..016e1da9 100644
--- a/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc
+++ b/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/ash/login/demo_mode/demo_setup_controller.h"
 
-#include <algorithm>
 #include <cctype>
 #include <utility>
 
@@ -12,6 +11,7 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/command_line.h"
+#include "base/containers/contains.h"
 #include "base/containers/flat_map.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_functions.h"
@@ -431,10 +431,7 @@
   std::string country_lowercase = base::ToLowerASCII(country);
 
   // Exclude US as it is the default country.
-  if (std::find(std::begin(DemoSession::kSupportedCountries),
-                std::end(DemoSession::kSupportedCountries),
-                country_uppercase) !=
-      std::end(DemoSession::kSupportedCountries)) {
+  if (base::Contains(DemoSession::kSupportedCountries, country_uppercase)) {
     if (chromeos::features::IsCloudGamingDeviceEnabled()) {
       return base::StringPrintf("admin-%s-blazey@%s", country_lowercase.c_str(),
                                 policy::kDemoModeDomain);
diff --git a/chrome/browser/ash/login/saml/saml_lockscreen_browsertest.cc b/chrome/browser/ash/login/saml/saml_lockscreen_browsertest.cc
index 0b458ec..3f160bc 100644
--- a/chrome/browser/ash/login/saml/saml_lockscreen_browsertest.cc
+++ b/chrome/browser/ash/login/saml/saml_lockscreen_browsertest.cc
@@ -684,10 +684,9 @@
   // Configure settings which are neccesarry for `NetworkStateInformer` to
   // report `NetworkStateInformer::PROXY_AUTH_REQUIRED` in the tests.
   void ConfigureNetworkBehindProxy() {
-    base::Value proxy_config = ProxyConfigDictionary::CreateFixedServers(
-        proxy_server_.host_port_pair().ToString(), "");
-
-    ProxyConfigDictionary proxy_config_dict(std::move(proxy_config));
+    ProxyConfigDictionary proxy_config_dict(
+        ProxyConfigDictionary::CreateFixedServers(
+            proxy_server_.host_port_pair().ToString(), ""));
     const NetworkState* network =
         network_state_test_helper_->network_state_handler()->DefaultNetwork();
     ASSERT_TRUE(network);
diff --git a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
index 46b235c..539b355 100644
--- a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
+++ b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
@@ -1291,9 +1291,8 @@
 void ChromeUserManagerImpl::RemoveReportingUser(const AccountId& account_id) {
   ScopedListPrefUpdate users_update(GetLocalState(), ::prefs::kReportingUsers);
   base::Value::List& update_list = users_update.Get();
-  auto it =
-      std::find(update_list.begin(), update_list.end(),
-                base::Value(FullyCanonicalize(account_id.GetUserEmail())));
+  auto it = base::ranges::find(
+      update_list, base::Value(FullyCanonicalize(account_id.GetUserEmail())));
   if (it == update_list.end())
     return;
   update_list.erase(it);
diff --git a/chrome/browser/ash/net/network_diagnostics/dns_resolution_routine.cc b/chrome/browser/ash/net/network_diagnostics/dns_resolution_routine.cc
index 5658db0f..924b425 100644
--- a/chrome/browser/ash/net/network_diagnostics/dns_resolution_routine.cc
+++ b/chrome/browser/ash/net/network_diagnostics/dns_resolution_routine.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/values.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/browser/profiles/profile_manager.h"
@@ -123,18 +124,13 @@
         endpoint_results_with_metadata) {
   receiver_.reset();
 
-  bool success = result == net::OK && !resolved_addresses->empty() &&
-                 resolved_addresses.has_value();
-  if (success) {
+  if (result == net::OK && !resolved_addresses->empty() &&
+      resolved_addresses.has_value()) {
     resolved_address_received_ = true;
     AnalyzeResultsAndExecuteCallback();
     return;
   }
-  bool retry =
-      std::find(std::begin(kRetryResponseCodes), std::end(kRetryResponseCodes),
-                result) != std::end(kRetryResponseCodes) &&
-      num_retries_ > 0;
-  if (retry) {
+  if (base::Contains(kRetryResponseCodes, result) && num_retries_ > 0) {
     num_retries_--;
     AttemptResolution();
   } else {
diff --git a/chrome/browser/ash/net/network_diagnostics/has_secure_wifi_connection_routine.cc b/chrome/browser/ash/net/network_diagnostics/has_secure_wifi_connection_routine.cc
index df503e7..3c9680e 100644
--- a/chrome/browser/ash/net/network_diagnostics/has_secure_wifi_connection_routine.cc
+++ b/chrome/browser/ash/net/network_diagnostics/has_secure_wifi_connection_routine.cc
@@ -4,11 +4,11 @@
 
 #include "chrome/browser/ash/net/network_diagnostics/has_secure_wifi_connection_routine.h"
 
-#include <algorithm>
 #include <iterator>
 #include <utility>
 
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "chromeos/services/network_config/in_process_instance.h"
 #include "chromeos/services/network_config/public/cpp/cros_network_config_util.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
@@ -40,18 +40,6 @@
 constexpr SecurityType kInsecureWiFiEncryptions[] = {
     SecurityType::kNone, SecurityType::kWep8021x, SecurityType::kWepPsk};
 
-bool IsSecureWiFiSecurityType(SecurityType security_type) {
-  return std::find(std::begin(kSecureWiFiEncryptions),
-                   std::end(kSecureWiFiEncryptions),
-                   security_type) != std::end(kSecureWiFiEncryptions);
-}
-
-bool IsInsecureSecurityType(SecurityType security_type) {
-  return std::find(std::begin(kInsecureWiFiEncryptions),
-                   std::end(kInsecureWiFiEncryptions),
-                   security_type) != std::end(kInsecureWiFiEncryptions);
-}
-
 }  // namespace
 
 HasSecureWiFiConnectionRoutine::HasSecureWiFiConnectionRoutine() {
@@ -78,7 +66,7 @@
 void HasSecureWiFiConnectionRoutine::AnalyzeResultsAndExecuteCallback() {
   if (!wifi_connected_) {
     set_verdict(mojom::RoutineVerdict::kNotRun);
-  } else if (IsInsecureSecurityType(wifi_security_)) {
+  } else if (base::Contains(kInsecureWiFiEncryptions, wifi_security_)) {
     set_verdict(mojom::RoutineVerdict::kProblem);
     switch (wifi_security_) {
       case SecurityType::kNone:
@@ -97,7 +85,7 @@
       case SecurityType::kWpaPsk:
         break;
     }
-  } else if (IsSecureWiFiSecurityType(wifi_security_)) {
+  } else if (base::Contains(kSecureWiFiEncryptions, wifi_security_)) {
     set_verdict(mojom::RoutineVerdict::kNoProblem);
   } else {
     set_verdict(mojom::RoutineVerdict::kProblem);
diff --git a/chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.cc b/chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.cc
index 5f78afa..b0cc6fc 100644
--- a/chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.cc
+++ b/chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.cc
@@ -4,10 +4,10 @@
 
 #include "chrome/browser/ash/net/network_diagnostics/network_diagnostics_util.h"
 
-#include <algorithm>
 #include <string>
 #include <vector>
 
+#include "base/containers/contains.h"
 #include "base/no_destructor.h"
 #include "base/rand_util.h"
 #include "base/strings/string_number_conversions.h"
@@ -30,8 +30,7 @@
   while (random_prefixes.size() != num_prefixes) {
     std::string prefix = GetRandomString(length);
     // Check that the prefix doesn't already exist.
-    if (std::find(std::begin(random_prefixes), std::end(random_prefixes),
-                  prefix) == std::end(random_prefixes)) {
+    if (!base::Contains(random_prefixes, prefix)) {
       random_prefixes.push_back(prefix);
     }
   }
diff --git a/chrome/browser/ash/net/system_proxy_manager_browsertest.cc b/chrome/browser/ash/net/system_proxy_manager_browsertest.cc
index a2869885..d506aef 100644
--- a/chrome/browser/ash/net/system_proxy_manager_browsertest.cc
+++ b/chrome/browser/ash/net/system_proxy_manager_browsertest.cc
@@ -420,7 +420,7 @@
   }
 
   void SetProxyConfigForNetworkService(const std::string& service_path,
-                                       base::Value proxy_config) {
+                                       base::Value::Dict proxy_config) {
     ProxyConfigDictionary proxy_config_dict(std::move(proxy_config));
     DCHECK(NetworkHandler::IsInitialized());
     const NetworkState* network =
@@ -582,10 +582,9 @@
 IN_PROC_BROWSER_TEST_F(SystemProxyManagerPolicyCredentialsBrowserTest,
                        UserSetProxy) {
   SetPolicyCredentials(kUsername, kPassword);
-  base::Value proxy_config(base::Value::Type::DICTIONARY);
-  proxy_config.SetKey("mode",
-                      base::Value(ProxyPrefs::kFixedServersProxyModeName));
-  proxy_config.SetKey("server", base::Value("proxy:8080"));
+  base::Value::Dict proxy_config;
+  proxy_config.Set("mode", base::Value(ProxyPrefs::kFixedServersProxyModeName));
+  proxy_config.Set("server", base::Value("proxy:8080"));
   SetProxyConfigForNetworkService(kDefaultServicePath, std::move(proxy_config));
   RunUntilIdle();
   int set_auth_details_call_count = 0;
diff --git a/chrome/browser/ash/platform_keys/key_permissions/key_permissions_manager_impl.cc b/chrome/browser/ash/platform_keys/key_permissions/key_permissions_manager_impl.cc
index 2ed969f..55491e79 100644
--- a/chrome/browser/ash/platform_keys/key_permissions/key_permissions_manager_impl.cc
+++ b/chrome/browser/ash/platform_keys/key_permissions/key_permissions_manager_impl.cc
@@ -4,12 +4,12 @@
 
 #include "chrome/browser/ash/platform_keys/key_permissions/key_permissions_manager_impl.h"
 
-#include <algorithm>
 #include <memory>
 #include <string>
 #include <vector>
 
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/containers/queue.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_functions.h"
@@ -337,8 +337,7 @@
     return;
   }
 
-  if (std::find(token_ids->begin(), token_ids->end(), token_id_) ==
-      token_ids->end()) {
+  if (!base::Contains(*token_ids, token_id_)) {
     LOG(ERROR) << "KeyPermissionsManager doesn't have access to token: "
                << static_cast<int>(token_id_);
     return;
diff --git a/chrome/browser/ash/policy/uploading/system_log_uploader_unittest.cc b/chrome/browser/ash/policy/uploading/system_log_uploader_unittest.cc
index 01be4a24..bdadef2a 100644
--- a/chrome/browser/ash/policy/uploading/system_log_uploader_unittest.cc
+++ b/chrome/browser/ash/policy/uploading/system_log_uploader_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "base/containers/contains.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
@@ -203,8 +204,7 @@
                      ZippedLogUploadCallback upload_callback) override {
     EXPECT_TRUE(is_zipped_upload_);
     for (const auto& log : system_logs_)
-      EXPECT_NE(system_logs->end(),
-                std::find(system_logs->begin(), system_logs->end(), log));
+      EXPECT_TRUE(base::Contains(*system_logs, log));
     std::move(upload_callback).Run(std::string(kZippedData));
   }
 
diff --git a/chrome/browser/ash/power/auto_screen_brightness/light_provider_mojo.cc b/chrome/browser/ash/power/auto_screen_brightness/light_provider_mojo.cc
index cb586db2..f657d129 100644
--- a/chrome/browser/ash/power/auto_screen_brightness/light_provider_mojo.cc
+++ b/chrome/browser/ash/power/auto_screen_brightness/light_provider_mojo.cc
@@ -4,12 +4,11 @@
 
 #include "chrome/browser/ash/power/auto_screen_brightness/light_provider_mojo.h"
 
-#include <algorithm>
 #include <iterator>
 #include <utility>
 
 #include "base/bind.h"
-#include "base/ranges/algorithm.h"
+#include "base/containers/contains.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "base/time/time.h"
 #include "chromeos/components/sensors/ash/sensor_hal_dispatcher.h"
@@ -87,8 +86,7 @@
     const std::vector<chromeos::sensors::mojom::DeviceType>& types) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  if (std::find(types.begin(), types.end(),
-                chromeos::sensors::mojom::DeviceType::LIGHT) == types.end()) {
+  if (!base::Contains(types, chromeos::sensors::mojom::DeviceType::LIGHT)) {
     // Not a light sensor. Ignoring this device.
     return;
   }
diff --git a/chrome/browser/ash/printing/history/print_job_database_impl_unittest.cc b/chrome/browser/ash/printing/history/print_job_database_impl_unittest.cc
index 66d62650..21b0d18 100644
--- a/chrome/browser/ash/printing/history/print_job_database_impl_unittest.cc
+++ b/chrome/browser/ash/printing/history/print_job_database_impl_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/ash/printing/history/print_job_database_impl.h"
 
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
@@ -227,8 +228,8 @@
   std::vector<PrintJobInfo> entries = GetPrintJobsFromProtoDatabase();
   ASSERT_EQ(2u, entries.size());
   std::vector<std::string> ids = {entries[0].id(), entries[1].id()};
-  EXPECT_TRUE(std::find(ids.begin(), ids.end(), kId1) != ids.end());
-  EXPECT_TRUE(std::find(ids.begin(), ids.end(), kId2) != ids.end());
+  EXPECT_TRUE(base::Contains(ids, kId1));
+  EXPECT_TRUE(base::Contains(ids, kId2));
 }
 
 TEST_F(PrintJobDatabaseImplTest, RequestsBeforeInitialization) {
diff --git a/chrome/browser/ash/proxy_config_service_impl_unittest.cc b/chrome/browser/ash/proxy_config_service_impl_unittest.cc
index a1643b8a..43c6a9e 100644
--- a/chrome/browser/ash/proxy_config_service_impl_unittest.cc
+++ b/chrome/browser/ash/proxy_config_service_impl_unittest.cc
@@ -329,7 +329,7 @@
     proxy_config_service_.reset();
   }
 
-  base::Value InitConfigWithTestInput(const Input& input) {
+  base::Value::Dict InitConfigWithTestInput(const Input& input) {
     switch (input.mode) {
       case Mode::kDirect:
         return ProxyConfigDictionary::CreateDirect();
@@ -343,10 +343,10 @@
                                                          input.bypass_rules);
     }
     NOTREACHED();
-    return base::Value();
+    return base::Value::Dict();
   }
 
-  void SetUserConfigInShill(const base::Value* pref_proxy_config_dict) {
+  void SetUserConfigInShill(const base::Value::Dict* pref_proxy_config_dict) {
     std::string proxy_config;
     if (pref_proxy_config_dict)
       base::JSONWriter::Write(*pref_proxy_config_dict, &proxy_config);
@@ -392,7 +392,7 @@
     SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "] %s", i,
                                     tests[i].description.c_str()));
 
-    base::Value test_config = InitConfigWithTestInput(tests[i].input);
+    base::Value::Dict test_config = InitConfigWithTestInput(tests[i].input);
     SetUserConfigInShill(&test_config);
 
     net::ProxyConfigWithAnnotation config;
@@ -445,10 +445,9 @@
         recommended_params.description.c_str(),
         network_params.description.c_str()));
 
-    base::Value managed_config = InitConfigWithTestInput(managed_params.input);
-    base::Value recommended_config =
-        InitConfigWithTestInput(recommended_params.input);
-    base::Value network_config = InitConfigWithTestInput(network_params.input);
+    base::Value managed_config(InitConfigWithTestInput(managed_params.input));
+    base::Value recommended_config(
+        InitConfigWithTestInput(recommended_params.input));
 
     // Managed proxy pref should take effect over recommended proxy and
     // non-existent network proxy.
@@ -477,6 +476,8 @@
     EXPECT_TRUE(recommended_params.proxy_rules.Matches(
         actual_config.value().proxy_rules()));
 
+    base::Value::Dict network_config =
+        InitConfigWithTestInput(network_params.input);
     // Network proxy should take take effect over recommended proxy pref.
     SetUserConfigInShill(&network_config);
     SyncGetLatestProxyConfig(&actual_config);
diff --git a/chrome/browser/ash/system_logs/debug_daemon_log_source.cc b/chrome/browser/ash/system_logs/debug_daemon_log_source.cc
index a0ff79f..07617e8 100644
--- a/chrome/browser/ash/system_logs/debug_daemon_log_source.cc
+++ b/chrome/browser/ash/system_logs/debug_daemon_log_source.cc
@@ -15,6 +15,7 @@
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/memory/weak_ptr.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/task/thread_pool.h"
@@ -156,6 +157,7 @@
                                    weak_ptr_factory_.GetWeakPtr(), true));
   ++num_pending_requests_;
 
+  const auto start_time = base::TimeTicks::Now();
   if (scrub_) {
     const user_manager::User* user =
         user_manager::UserManager::Get()->GetActiveUser();
@@ -163,10 +165,11 @@
         cryptohome::CreateAccountIdentifierFromAccountId(
             user ? user->GetAccountId() : EmptyAccountId()),
         base::BindOnce(&DebugDaemonLogSource::OnGetLogs,
-                       weak_ptr_factory_.GetWeakPtr()));
+                       weak_ptr_factory_.GetWeakPtr(), start_time));
   } else {
     client->GetAllLogs(base::BindOnce(&DebugDaemonLogSource::OnGetLogs,
-                                      weak_ptr_factory_.GetWeakPtr()));
+                                      weak_ptr_factory_.GetWeakPtr(),
+                                      start_time));
   }
   ++num_pending_requests_;
 }
@@ -190,10 +193,19 @@
   RequestCompleted();
 }
 
-void DebugDaemonLogSource::OnGetLogs(bool /* succeeded */,
+void DebugDaemonLogSource::OnGetLogs(const base::TimeTicks get_start_time,
+                                     bool /* succeeded */,
                                      const KeyValueMap& logs) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
+  // We are interested in the performance of gathering the logs for feedback
+  // reports only where the logs will always be scrubbed. GetBigFeedbackLogs is
+  // the dbus method used.
+  if (scrub_) {
+    base::UmaHistogramMediumTimes(
+        "Feedback.ChromeOSApp.Duration.GetBigFeedbackLogs",
+        base::TimeTicks::Now() - get_start_time);
+  }
   // We ignore 'succeeded' for this callback - we want to display as much of the
   // debug info as we can even if we failed partway through parsing, and if we
   // couldn't fetch any of it, none of the fields will even appear.
diff --git a/chrome/browser/ash/system_logs/debug_daemon_log_source.h b/chrome/browser/ash/system_logs/debug_daemon_log_source.h
index e2cafac..478ce93 100644
--- a/chrome/browser/ash/system_logs/debug_daemon_log_source.h
+++ b/chrome/browser/ash/system_logs/debug_daemon_log_source.h
@@ -12,6 +12,7 @@
 
 #include "base/files/file_path.h"
 #include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
 #include "components/feedback/system_logs/system_logs_source.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
@@ -55,7 +56,8 @@
   void OnGetRoutes(bool is_ipv6,
                    absl::optional<std::vector<std::string>> routes);
   void OnGetOneLog(std::string key, absl::optional<std::string> status);
-  void OnGetLogs(bool succeeded,
+  void OnGetLogs(const base::TimeTicks get_start_time,
+                 bool succeeded,
                  const KeyValueMap& logs);
 
   // Reads the logged-in users' log files that have to be read by Chrome as
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 984c1d63..999c9ac 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -252,6 +252,7 @@
   // ensure the persistent storage of current max SessionId.
   sessions::SessionIdGenerator::GetInstance()->Init(local_state_.get());
 
+  DCHECK(browser_policy_connector_);
   DCHECK(local_state_);
   DCHECK(startup_data);
   // Most work should be done in Init().
@@ -414,11 +415,10 @@
   // Initial cleanup for ChromeBrowserCloudManagement, shutdown components that
   // depend on profile and notification system. For example, ProfileManager
   // observer and KeyServices observer need to be removed before profiles.
-  if (browser_policy_connector_ &&
-      browser_policy_connector_->chrome_browser_cloud_management_controller()) {
-    browser_policy_connector_->chrome_browser_cloud_management_controller()
-        ->ShutDown();
-  }
+  auto* cloud_management_controller =
+      browser_policy_connector_->chrome_browser_cloud_management_controller();
+  if (cloud_management_controller)
+    cloud_management_controller->ShutDown();
 #endif
 
   system_notification_helper_.reset();
@@ -470,8 +470,7 @@
   // down while the IO and FILE threads are still alive. The monitoring
   // framework owned by |browser_policy_connector_| relies on |gcm_driver_|, so
   // this must be shutdown before |gcm_driver_| below.
-  if (browser_policy_connector_)
-    browser_policy_connector_->Shutdown();
+  browser_policy_connector_->Shutdown();
 
   // The |gcm_driver_| must shut down while the IO thread is still alive.
   if (gcm_driver_)
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
index 81c00ee7..f8a1250 100644
--- a/chrome/browser/browser_process_impl.h
+++ b/chrome/browser/browser_process_impl.h
@@ -250,7 +250,7 @@
 
   // Must be destroyed after |local_state_|.
   // Must be destroyed after |profile_manager_|.
-  std::unique_ptr<policy::ChromeBrowserPolicyConnector>
+  std::unique_ptr<policy::ChromeBrowserPolicyConnector> const
       browser_policy_connector_;
 
   // Must be destroyed before |browser_policy_connector_|.
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
index 3a12895..7c30d3fb 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -4466,11 +4466,13 @@
       window_info.caption_button_enabled_status = caption_button_enabled_status;
       window_info.caption_button_visible_status = caption_button_visible_status;
     } else {
-      auto* widget = views::Widget::GetWidgetForNativeWindow(window);
+      auto* no_frame_header_widget =
+          views::Widget::GetWidgetForNativeWindow(window);
       // All widgets for app windows in chromeos should have a frame. Non app
       // windows may not have a frame and frame mode will be NONE.
-      DCHECK(!widget || widget->GetNativeWindow()->GetType() !=
-                            aura::client::WINDOW_TYPE_NORMAL);
+      DCHECK(!no_frame_header_widget ||
+             no_frame_header_widget->GetNativeWindow()->GetType() !=
+                 aura::client::WINDOW_TYPE_NORMAL);
       window_info.frame_mode =
           api::autotest_private::FrameMode::FRAME_MODE_NONE;
       window_info.is_frame_visible = false;
diff --git a/chrome/browser/chromeos/extensions/extensions_permissions_tracker.cc b/chrome/browser/chromeos/extensions/extensions_permissions_tracker.cc
index 605df0d..0f7d56b 100644
--- a/chrome/browser/chromeos/extensions/extensions_permissions_tracker.cc
+++ b/chrome/browser/chromeos/extensions/extensions_permissions_tracker.cc
@@ -4,9 +4,7 @@
 
 #include "chrome/browser/chromeos/extensions/extensions_permissions_tracker.h"
 
-#include <algorithm>
-
-#include "base/ranges/algorithm.h"
+#include "base/containers/contains.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/pref_names.h"
@@ -173,9 +171,7 @@
 }  // namespace
 
 bool IsAllowlistedForManagedGuestSession(const std::string& extension_id) {
-  return std::find(std::begin(kManagedGuestSessionAllowlist),
-                   std::end(kManagedGuestSessionAllowlist),
-                   extension_id) != std::end(kManagedGuestSessionAllowlist);
+  return base::Contains(kManagedGuestSessionAllowlist, extension_id);
 }
 
 ExtensionsPermissionsTracker::ExtensionsPermissionsTracker(
@@ -287,10 +283,9 @@
 
 void ExtensionsPermissionsTracker::ParseExtensionPermissions(
     const Extension* extension) {
-  bool is_safe = IsAllowlistedForManagedGuestSession(extension->id()) ||
-                 IsSafePerms(extension->permissions_data());
-
-  extension_safety_ratings_[extension->id()] = is_safe;
+  extension_safety_ratings_[extension->id()] =
+      IsAllowlistedForManagedGuestSession(extension->id()) ||
+      IsSafePerms(extension->permissions_data());
 }
 
 }  // namespace extensions
diff --git a/chrome/browser/chromeos/extensions/users_private/users_private_apitest.cc b/chrome/browser/chromeos/extensions/users_private/users_private_apitest.cc
index 96fd6fc..80dc1119 100644
--- a/chrome/browser/chromeos/extensions/users_private/users_private_apitest.cc
+++ b/chrome/browser/chromeos/extensions/users_private/users_private_apitest.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/memory/ptr_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/values.h"
 #include "build/build_config.h"
 #include "chrome/browser/ash/login/lock/screen_locker.h"
@@ -81,7 +82,7 @@
     if (value.is_string())
       email = value.GetString();
 
-    auto iter = std::find(user_list_.begin(), user_list_.end(), email);
+    auto iter = base::ranges::find(user_list_, email);
     if (iter != user_list_.end())
       user_list_.erase(iter);
 
diff --git a/chrome/browser/devtools/device/devtools_android_bridge.cc b/chrome/browser/devtools/device/devtools_android_bridge.cc
index 6c137317..12ec7f44 100644
--- a/chrome/browser/devtools/device/devtools_android_bridge.cc
+++ b/chrome/browser/devtools/device/devtools_android_bridge.cc
@@ -5,7 +5,7 @@
 #include "chrome/browser/devtools/device/devtools_android_bridge.h"
 
 #include <stddef.h>
-#include <algorithm>
+
 #include <map>
 #include <memory>
 #include <set>
@@ -20,6 +20,7 @@
 #include "base/json/json_reader.h"
 #include "base/lazy_instance.h"
 #include "base/memory/singleton.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/escape.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
@@ -184,8 +185,7 @@
 void DevToolsAndroidBridge::RemoveDeviceListListener(
     DeviceListListener* listener) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  auto it = std::find(device_list_listeners_.begin(),
-                      device_list_listeners_.end(), listener);
+  auto it = base::ranges::find(device_list_listeners_, listener);
   DCHECK(it != device_list_listeners_.end());
   device_list_listeners_.erase(it);
   if (!NeedsDeviceListPolling())
@@ -202,8 +202,7 @@
 void DevToolsAndroidBridge::RemoveDeviceCountListener(
     DeviceCountListener* listener) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  auto it = std::find(device_count_listeners_.begin(),
-                      device_count_listeners_.end(), listener);
+  auto it = base::ranges::find(device_count_listeners_, listener);
   DCHECK(it != device_count_listeners_.end());
   device_count_listeners_.erase(it);
   if (device_count_listeners_.empty())
@@ -220,8 +219,7 @@
 
 void DevToolsAndroidBridge::RemovePortForwardingListener(
     PortForwardingListener* listener) {
-  auto it = std::find(port_forwarding_listeners_.begin(),
-                      port_forwarding_listeners_.end(), listener);
+  auto it = base::ranges::find(port_forwarding_listeners_, listener);
   DCHECK(it != port_forwarding_listeners_.end());
   port_forwarding_listeners_.erase(it);
   if (!NeedsDeviceListPolling())
diff --git a/chrome/browser/devtools/device/usb/android_usb_device.cc b/chrome/browser/devtools/device/usb/android_usb_device.cc
index a47e05d..0df8fcf 100644
--- a/chrome/browser/devtools/device/usb/android_usb_device.cc
+++ b/chrome/browser/devtools/device/usb/android_usb_device.cc
@@ -14,6 +14,7 @@
 #include "base/containers/cxx20_erase.h"
 #include "base/lazy_instance.h"
 #include "base/memory/ref_counted_memory.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/single_thread_task_runner.h"
@@ -477,7 +478,7 @@
   DCHECK(task_runner_->BelongsToCurrentThread());
 
   // Remove this AndroidUsbDevice from |g_devices|.
-  auto it = std::find(g_devices.Get().begin(), g_devices.Get().end(), this);
+  auto it = base::ranges::find(g_devices.Get(), this);
   if (it != g_devices.Get().end())
     g_devices.Get().erase(it);
 
diff --git a/chrome/browser/devtools/devtools_file_watcher.cc b/chrome/browser/devtools/devtools_file_watcher.cc
index 1584c16..46438749 100644
--- a/chrome/browser/devtools/devtools_file_watcher.cc
+++ b/chrome/browser/devtools/devtools_file_watcher.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/devtools/devtools_file_watcher.h"
 
-#include <algorithm>
 #include <map>
 #include <memory>
 #include <set>
@@ -16,6 +15,7 @@
 #include "base/files/file_path_watcher.h"
 #include "base/files/file_util.h"
 #include "base/memory/ref_counted.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "base/task/lazy_thread_pool_task_runner.h"
 #include "base/task/sequenced_task_runner.h"
@@ -114,7 +114,7 @@
 void DevToolsFileWatcher::SharedFileWatcher::RemoveListener(
     DevToolsFileWatcher* watcher) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  auto it = std::find(listeners_.begin(), listeners_.end(), watcher);
+  auto it = base::ranges::find(listeners_, watcher);
   listeners_.erase(it);
   if (listeners_.empty()) {
     file_path_times_.clear();
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc
index 50fbcf0..1a04cfd 100644
--- a/chrome/browser/devtools/devtools_window.cc
+++ b/chrome/browser/devtools/devtools_window.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/devtools/devtools_window.h"
 
-#include <algorithm>
 #include <memory>
 #include <set>
 #include <utility>
@@ -16,6 +15,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/metrics/user_metrics.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/escape.h"
 #include "base/time/time.h"
 #include "base/values.h"
@@ -453,7 +453,7 @@
   owned_toolbox_web_contents_.reset();
 
   DevToolsWindows* instances = g_devtools_window_instances.Pointer();
-  auto it(std::find(instances->begin(), instances->end(), this));
+  auto it = base::ranges::find(*instances, this);
   DCHECK(it != instances->end());
   instances->erase(it);
 
diff --git a/chrome/browser/devtools/devtools_window_testing.cc b/chrome/browser/devtools/devtools_window_testing.cc
index 440d16a..064405e6 100644
--- a/chrome/browser/devtools/devtools_window_testing.cc
+++ b/chrome/browser/devtools/devtools_window_testing.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/lazy_instance.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h"
 #include "chrome/browser/devtools/devtools_window.h"
@@ -38,7 +39,7 @@
 DevToolsWindowTesting::~DevToolsWindowTesting() {
   DevToolsWindowTestings* instances =
       g_devtools_window_testing_instances.Pointer();
-  auto it(std::find(instances->begin(), instances->end(), this));
+  auto it = base::ranges::find(*instances, this);
   DCHECK(it != instances->end());
   instances->erase(it);
   if (!close_callback_.is_null())
diff --git a/chrome/browser/devtools/protocol/devtools_protocol_browsertest.cc b/chrome/browser/devtools/protocol/devtools_protocol_browsertest.cc
index bae43822..25b73b1 100644
--- a/chrome/browser/devtools/protocol/devtools_protocol_browsertest.cc
+++ b/chrome/browser/devtools/protocol/devtools_protocol_browsertest.cc
@@ -6,6 +6,7 @@
 
 #include "base/base64.h"
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/files/file_util.h"
 #include "base/path_service.h"
 #include "base/strings/string_split.h"
@@ -78,10 +79,8 @@
       params.FindStringByDottedPath("visibleSecurityState.safetyTipInfo"));
   const base::Value* security_state_issue_ids =
       params.FindByDottedPath("visibleSecurityState.securityStateIssueIds");
-  EXPECT_TRUE(std::find(security_state_issue_ids->GetListDeprecated().begin(),
-                        security_state_issue_ids->GetListDeprecated().end(),
-                        base::Value("scheme-is-not-cryptographic")) !=
-              security_state_issue_ids->GetListDeprecated().end());
+  EXPECT_TRUE(base::Contains(security_state_issue_ids->GetListDeprecated(),
+                             base::Value("scheme-is-not-cryptographic")));
 }
 
 IN_PROC_BROWSER_TEST_F(DevToolsProtocolTest, CreateDeleteContext) {
diff --git a/chrome/browser/download/android/dangerous_download_dialog_bridge.cc b/chrome/browser/download/android/dangerous_download_dialog_bridge.cc
index 0b1700fb..db268a4b 100644
--- a/chrome/browser/download/android/dangerous_download_dialog_bridge.cc
+++ b/chrome/browser/download/android/dangerous_download_dialog_bridge.cc
@@ -8,7 +8,9 @@
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_string.h"
+#include "base/containers/contains.h"
 #include "base/files/file_path.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/android/android_theme_resources.h"
 #include "chrome/browser/android/resource_mapper.h"
@@ -36,9 +38,8 @@
 
 void DangerousDownloadDialogBridge::Show(download::DownloadItem* download_item,
                                          ui::WindowAndroid* window_android) {
-  // Don't shown dangerous download again if it is already showing.
-  if (std::find(download_items_.begin(), download_items_.end(),
-                download_item) != download_items_.end()) {
+  // Don't show dangerous download again if it is already showing.
+  if (base::Contains(download_items_, download_item)) {
     return;
   }
   if (!window_android) {
@@ -62,8 +63,7 @@
 
 void DangerousDownloadDialogBridge::OnDownloadDestroyed(
     download::DownloadItem* download_item) {
-  auto iter =
-      std::find(download_items_.begin(), download_items_.end(), download_item);
+  auto iter = base::ranges::find(download_items_, download_item);
   if (iter != download_items_.end())
     download_items_.erase(iter);
 }
diff --git a/chrome/browser/download/android/duplicate_download_dialog_bridge_delegate.cc b/chrome/browser/download/android/duplicate_download_dialog_bridge_delegate.cc
index 58eac236..30047649 100644
--- a/chrome/browser/download/android/duplicate_download_dialog_bridge_delegate.cc
+++ b/chrome/browser/download/android/duplicate_download_dialog_bridge_delegate.cc
@@ -7,8 +7,10 @@
 #include <string>
 
 #include "base/android/path_utils.h"
+#include "base/containers/contains.h"
 #include "base/files/file_path.h"
 #include "base/memory/singleton.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/android/android_theme_resources.h"
 #include "chrome/browser/download/android/download_dialog_utils.h"
@@ -46,8 +48,7 @@
         file_selected_callback) {
   DCHECK(web_contents);
   // Don't shown duplicate dialog again if it is already showing.
-  if (std::find(download_items_.begin(), download_items_.end(),
-                download_item) != download_items_.end()) {
+  if (base::Contains(download_items_, download_item)) {
     return;
   }
   download_item->AddObserver(this);
@@ -91,8 +92,7 @@
 
 void DuplicateDownloadDialogBridgeDelegate::OnDownloadDestroyed(
     download::DownloadItem* download_item) {
-  auto iter =
-      std::find(download_items_.begin(), download_items_.end(), download_item);
+  auto iter = base::ranges::find(download_items_, download_item);
   if (iter != download_items_.end())
     download_items_.erase(iter);
 }
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate_browsertest.cc b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate_browsertest.cc
index 1a7cc2c..d128493 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate_browsertest.cc
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate_browsertest.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <algorithm>
 #include <memory>
 #include <set>
 
+#include "base/containers/contains.h"
 #include "base/files/file.h"
 #include "base/files/file_util.h"
 #include "base/path_service.h"
@@ -104,9 +104,7 @@
     EXPECT_EQ(final_action_, ack->ack().final_action());
 
     ++ack_count_;
-    ASSERT_NE(requests_tokens_.end(),
-              std::find(requests_tokens_.begin(), requests_tokens_.end(),
-                        ack->ack().request_token()));
+    ASSERT_TRUE(base::Contains(requests_tokens_, ack->ack().request_token()));
   }
 
   void UploadForDeepScanning(std::unique_ptr<Request> request) override {
diff --git a/chrome/browser/enterprise/connectors/analysis/files_request_handler.cc b/chrome/browser/enterprise/connectors/analysis/files_request_handler.cc
index c50e4a0..8ea6a19 100644
--- a/chrome/browser/enterprise/connectors/analysis/files_request_handler.cc
+++ b/chrome/browser/enterprise/connectors/analysis/files_request_handler.cc
@@ -8,6 +8,7 @@
 #include "base/files/file_path.h"
 #include "base/memory/ptr_util.h"
 #include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/enterprise/connectors/common.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.h"
 #include "chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h"
@@ -145,7 +146,7 @@
     base::FilePath path,
     safe_browsing::BinaryUploadService::Result result,
     enterprise_connectors::ContentAnalysisResponse response) {
-  auto it = std::find(paths_.begin(), paths_.end(), path);
+  auto it = base::ranges::find(paths_, path);
   DCHECK(it != paths_.end());
   size_t index = std::distance(paths_.begin(), it);
   FileRequestCallback(index, result, response);
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/core/mac/secure_enclave_client_impl.mm b/chrome/browser/enterprise/connectors/device_trust/key_management/core/mac/secure_enclave_client_impl.mm
index 71abe8dd..6150cb00 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/core/mac/secure_enclave_client_impl.mm
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/core/mac/secure_enclave_client_impl.mm
@@ -132,9 +132,6 @@
       kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks,
       &kCFTypeDictionaryValueCallBacks));
   CFDictionarySetValue(query, kSecClass, kSecClassKey);
-  CFDictionarySetValue(
-      query, kSecAttrAccessGroup,
-      base::SysUTF8ToNSString(constants::kKeychainAccessGroup));
   CFDictionarySetValue(query, kSecAttrKeyType, kSecAttrKeyTypeECSECPrimeRandom);
   CFDictionarySetValue(query, kSecAttrLabel,
                        base::SysUTF8ToCFStringRef(GetLabelFromKeyType(type)));
diff --git a/chrome/browser/enterprise/connectors/file_system/service_settings.cc b/chrome/browser/enterprise/connectors/file_system/service_settings.cc
index 47d8607..7e049bd 100644
--- a/chrome/browser/enterprise/connectors/file_system/service_settings.cc
+++ b/chrome/browser/enterprise/connectors/file_system/service_settings.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/enterprise/connectors/file_system/service_settings.h"
 
+#include "base/containers/contains.h"
 #include "chrome/browser/enterprise/connectors/service_provider_config.h"
 #include "components/url_matcher/url_util.h"
 
@@ -264,8 +265,7 @@
     if (maybe_pattern_setting.has_value()) {
       const auto& mime_types = maybe_pattern_setting.value().mime_types;
       this_match_has_wildcard_enable =
-          (std::find(mime_types.begin(), mime_types.end(), kWildcardMimeType) !=
-           mime_types.end());
+          base::Contains(mime_types, kWildcardMimeType);
       enable_mime_types.insert(mime_types.begin(), mime_types.end());
     }
 
diff --git a/chrome/browser/enterprise/reporting/extension_request/extension_request_observer_unittest.cc b/chrome/browser/enterprise/reporting/extension_request/extension_request_observer_unittest.cc
index 8526d19..09845bb 100644
--- a/chrome/browser/enterprise/reporting/extension_request/extension_request_observer_unittest.cc
+++ b/chrome/browser/enterprise/reporting/extension_request/extension_request_observer_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/enterprise/reporting/extension_request/extension_request_observer.h"
 
+#include "base/containers/contains.h"
 #include "base/json/json_reader.h"
 #include "base/json/values_util.h"
 #include "base/test/metrics/histogram_tester.h"
@@ -148,9 +149,7 @@
     EXPECT_EQ(number_of_existing_requests - expected_removed_requests.size(),
               actual_pending_requests.size());
     for (auto it : actual_pending_requests) {
-      EXPECT_EQ(expected_removed_requests.end(),
-                std::find(expected_removed_requests.begin(),
-                          expected_removed_requests.end(), it.first));
+      EXPECT_FALSE(base::Contains(expected_removed_requests, it.first));
     }
     closed_notification_count_ += 1;
     histogram_tester()->ExpectBucketCount(kPendingListUpdateMetricsName,
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
index 01d3952c..6321eb34 100644
--- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
+++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
@@ -2249,10 +2249,10 @@
   // that the PAC isn't already loaded by the time the extension starts
   // affecting requests.
   PrefService* pref_service = browser()->profile()->GetPrefs();
-  pref_service->Set(proxy_config::prefs::kProxy,
-                    ProxyConfigDictionary::CreatePacScript(
-                        embedded_test_server()->GetURL("/self.pac").spec(),
-                        true /* pac_mandatory */));
+  pref_service->SetDict(proxy_config::prefs::kProxy,
+                        ProxyConfigDictionary::CreatePacScript(
+                            embedded_test_server()->GetURL("/self.pac").spec(),
+                            true /* pac_mandatory */));
   // Flush the proxy configuration change over the Mojo pipe to avoid any races.
   ProfileNetworkContextServiceFactory::GetForContext(browser()->profile())
       ->FlushProxyConfigMonitorForTesting();
diff --git a/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc b/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
index 47c7eff2..5bbd575 100644
--- a/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
+++ b/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/extensions/api/language_settings_private/language_settings_private_api.h"
 
-#include <algorithm>
 #include <map>
 #include <memory>
 #include <set>
@@ -15,6 +14,7 @@
 #include "base/containers/contains.h"
 #include "base/containers/flat_set.h"
 #include "base/feature_list.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
@@ -884,8 +884,7 @@
       input_method_ids, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
 
   // Find and remove the matching input method id.
-  const auto& pos = std::find(input_method_list.begin(),
-                              input_method_list.end(), input_method_id);
+  const auto& pos = base::ranges::find(input_method_list, input_method_id);
   if (pos != input_method_list.end()) {
     input_method_list.erase(pos);
     prefs->SetString(pref_name, base::JoinString(input_method_list, ","));
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
index 24cbc04..4e6508bf 100644
--- a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
+++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
@@ -47,6 +47,7 @@
 #include "components/password_manager/core/browser/password_manager_metrics_util.h"
 #include "components/password_manager/core/browser/password_manager_util.h"
 #include "components/password_manager/core/browser/password_scripts_fetcher.h"
+#include "components/password_manager/core/browser/ui/credential_ui_entry.h"
 #include "components/password_manager/core/browser/ui/credential_utils.h"
 #include "components/password_manager/core/browser/ui/insecure_credentials_manager.h"
 #include "components/password_manager/core/browser/ui/saved_passwords_presenter.h"
@@ -284,27 +285,12 @@
 
 std::vector<api::passwords_private::PasswordUiEntry>
 PasswordCheckDelegate::GetInsecureCredentials() {
-  std::vector<CredentialUIEntry> compromised_credentials =
+  std::vector<CredentialUIEntry> credentials =
       insecure_credentials_manager_.GetInsecureCredentialEntries();
-  std::vector<CredentialUIEntry> weak_credentials =
-      insecure_credentials_manager_.GetWeakCredentialEntries();
 
   std::vector<api::passwords_private::PasswordUiEntry> insecure_credentials;
-  insecure_credentials.reserve(compromised_credentials.size() +
-                               weak_credentials.size());
-  for (auto& credential : compromised_credentials) {
-    insecure_credentials.push_back(
-        ConstructInsecureCredentialUiEntry(credential));
-  }
-
-  for (auto& credential : weak_credentials) {
-    // TODO:(crbug.com/1350947) - Remove this after InsecureCredentialsManager
-    // sets Weak flag by itself.
-    credential.password_issues.clear();
-    credential.password_issues.insert(
-        {password_manager::InsecureType::kWeak,
-         password_manager::InsecurityMetadata(
-             base::Time(), password_manager::IsMuted(false))});
+  insecure_credentials.reserve(credentials.size());
+  for (auto& credential : credentials) {
     insecure_credentials.push_back(
         ConstructInsecureCredentialUiEntry(credential));
   }
@@ -522,13 +508,6 @@
   }
 }
 
-void PasswordCheckDelegate::OnWeakCredentialsChanged() {
-  if (auto* event_router =
-          PasswordsPrivateEventRouterFactory::GetForProfile(profile_)) {
-    event_router->OnInsecureCredentialsChanged(GetInsecureCredentials());
-  }
-}
-
 void PasswordCheckDelegate::OnStateChanged(State state) {
   if (state == State::kIdle && std::exchange(is_check_running_, false)) {
     // When the service transitions from running into idle it has finished a
@@ -618,11 +597,19 @@
   auto facet = password_manager::FacetURI::FromPotentiallyInvalidSpec(
       entry.GetFirstSignonRealm());
   api_credential.is_android_credential = facet.IsValidAndroidFacetURI();
-  api_credential.id = id_generator_->GenerateId(entry);
   api_credential.username = base::UTF16ToUTF8(entry.username);
   api_credential.urls = CreateUrlCollectionFromCredential(entry);
   api_credential.stored_in = StoreSetFromCredential(entry);
   api_credential.compromised_info = CreateCompromiseInfo(entry);
+  CredentialUIEntry copy = entry;
+  // Weak and reused flags should be cleaned before obtaining id. Otherwise
+  // weak or reused flag will be saved to the database whenever credential is
+  // modified.
+  // TODO(crbug.com/1369650): Update this once saving weak and reused issues is
+  // supported.
+  copy.password_issues.erase(InsecureType::kWeak);
+  copy.password_issues.erase(InsecureType::kReused);
+  api_credential.id = id_generator_->GenerateId(copy);
   GURL entry_url = entry.GetURL();
   if (api_credential.is_android_credential) {
     // |change_password_url| need special handling for Android. Here we use
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate.h b/chrome/browser/extensions/api/passwords_private/password_check_delegate.h
index e4f2d0e8..82976dd 100644
--- a/chrome/browser/extensions/api/passwords_private/password_check_delegate.h
+++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate.h
@@ -116,11 +116,6 @@
   // a valid pointer can be obtained.
   void OnInsecureCredentialsChanged() override;
 
-  // password_manager::InsecureCredentialsManager::Observer:
-  // Invokes PasswordsPrivateEventRouter::OnWeakCredentialsChanged if a valid
-  // pointer can be obtained.
-  void OnWeakCredentialsChanged() override;
-
   // password_manager::BulkLeakCheckService::Observer:
   void OnStateChanged(
       password_manager::BulkLeakCheckService::State state) override;
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
index e345a31..31f796d 100644
--- a/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
+++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate_unittest.cc
@@ -1283,8 +1283,6 @@
               ElementsAre(ExpectCredentialWithScriptInfo(
                               kUsername1, /*has_startable_script=*/true),
                           ExpectCredentialWithScriptInfo(
-                              kUsername1, /*has_startable_script=*/false),
-                          ExpectCredentialWithScriptInfo(
                               kUsername2, /*has_startable_script=*/false)));
 
   // After setin the feature parameter for weak credentials to `true` ...
@@ -1298,8 +1296,6 @@
               ElementsAre(ExpectCredentialWithScriptInfo(
                               kUsername1, /*has_startable_script=*/true),
                           ExpectCredentialWithScriptInfo(
-                              kUsername1, /*has_startable_script=*/true),
-                          ExpectCredentialWithScriptInfo(
                               kUsername2, /*has_startable_script=*/true)));
 }
 
diff --git a/chrome/browser/extensions/api/processes/processes_api.cc b/chrome/browser/extensions/api/processes/processes_api.cc
index b913bb54..475aaf0 100644
--- a/chrome/browser/extensions/api/processes/processes_api.cc
+++ b/chrome/browser/extensions/api/processes/processes_api.cc
@@ -6,7 +6,6 @@
 
 #include <stdint.h>
 
-#include <algorithm>
 #include <memory>
 #include <set>
 #include <utility>
@@ -15,6 +14,7 @@
 #include "base/lazy_instance.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/process/process.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/extensions/api/tabs/tabs_constants.h"
@@ -648,9 +648,7 @@
     if (specific_processes_requested) {
       // Note: we can't use |!process_host_ids_.empty()| directly in the above
       // condition as we will erase from |process_host_ids_| below.
-      auto itr = std::find(process_host_ids_.begin(),
-                           process_host_ids_.end(),
-                           child_process_host_id);
+      auto itr = base::ranges::find(process_host_ids_, child_process_host_id);
       if (itr == process_host_ids_.end())
         continue;
 
diff --git a/chrome/browser/extensions/api/proxy/proxy_api.cc b/chrome/browser/extensions/api/proxy/proxy_api.cc
index 0ef101a..2ef5740 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api.cc
@@ -146,7 +146,7 @@
 
   // This is a dictionary wrapper that exposes the proxy configuration stored in
   // the browser preferences.
-  ProxyConfigDictionary config(browser_pref->Clone());
+  ProxyConfigDictionary config(browser_pref->GetDict().Clone());
 
   ProxyPrefs::ProxyMode mode;
   if (!config.GetMode(&mode)) {
diff --git a/chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc b/chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc
index e9d9ba0..0d4a00bf 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc
@@ -228,40 +228,40 @@
 
 TEST(ExtensionProxyApiHelpers, CreateProxyConfigDict) {
   std::string error;
-  base::Value exp_direct = ProxyConfigDictionary::CreateDirect();
+  base::Value::Dict exp_direct = ProxyConfigDictionary::CreateDirect();
   std::unique_ptr<base::Value> out_direct(CreateProxyConfigDict(
       ProxyPrefs::MODE_DIRECT, false, std::string(), std::string(),
       std::string(), std::string(), &error));
   EXPECT_EQ(exp_direct, *out_direct);
 
-  base::Value exp_auto = ProxyConfigDictionary::CreateAutoDetect();
+  base::Value::Dict exp_auto = ProxyConfigDictionary::CreateAutoDetect();
   std::unique_ptr<base::Value> out_auto(CreateProxyConfigDict(
       ProxyPrefs::MODE_AUTO_DETECT, false, std::string(), std::string(),
       std::string(), std::string(), &error));
   EXPECT_EQ(exp_auto, *out_auto);
 
-  base::Value exp_pac_url =
+  base::Value::Dict exp_pac_url =
       ProxyConfigDictionary::CreatePacScript(kSamplePacScriptUrl, false);
   std::unique_ptr<base::Value> out_pac_url(CreateProxyConfigDict(
       ProxyPrefs::MODE_PAC_SCRIPT, false, kSamplePacScriptUrl, std::string(),
       std::string(), std::string(), &error));
   EXPECT_EQ(exp_pac_url, *out_pac_url);
 
-  base::Value exp_pac_data =
+  base::Value::Dict exp_pac_data =
       ProxyConfigDictionary::CreatePacScript(kSamplePacScriptAsDataUrl, false);
   std::unique_ptr<base::Value> out_pac_data(CreateProxyConfigDict(
       ProxyPrefs::MODE_PAC_SCRIPT, false, std::string(), kSamplePacScript,
       std::string(), std::string(), &error));
   EXPECT_EQ(exp_pac_data, *out_pac_data);
 
-  base::Value exp_fixed =
+  base::Value::Dict exp_fixed =
       ProxyConfigDictionary::CreateFixedServers("foo:80", "localhost");
   std::unique_ptr<base::Value> out_fixed(CreateProxyConfigDict(
       ProxyPrefs::MODE_FIXED_SERVERS, false, std::string(), std::string(),
       "foo:80", "localhost", &error));
   EXPECT_EQ(exp_fixed, *out_fixed);
 
-  base::Value exp_system = ProxyConfigDictionary::CreateSystem();
+  base::Value::Dict exp_system = ProxyConfigDictionary::CreateSystem();
   std::unique_ptr<base::Value> out_system(CreateProxyConfigDict(
       ProxyPrefs::MODE_SYSTEM, false, std::string(), std::string(),
       std::string(), std::string(), &error));
diff --git a/chrome/browser/extensions/api/proxy/proxy_apitest.cc b/chrome/browser/extensions/api/proxy/proxy_apitest.cc
index d60d7229..e4f8b0e 100644
--- a/chrome/browser/extensions/api/proxy/proxy_apitest.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_apitest.cc
@@ -49,7 +49,7 @@
     // TODO(https://crbug.com/1348219) This should call
     // `PrefService::GetDict`.
     ProxyConfigDictionary dict(
-        pref_service->GetValue(proxy_config::prefs::kProxy).Clone());
+        pref_service->GetDict(proxy_config::prefs::kProxy).Clone());
 
     ProxyPrefs::ProxyMode mode;
     ASSERT_TRUE(dict.GetMode(&mode));
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
index fdb49a13..71dd6aa 100644
--- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -1676,10 +1676,10 @@
   // that the PAC isn't already loaded by the time the extension starts
   // affecting requests.
   PrefService* pref_service = browser()->profile()->GetPrefs();
-  pref_service->Set(proxy_config::prefs::kProxy,
-                    ProxyConfigDictionary::CreatePacScript(
-                        embedded_test_server()->GetURL("/self.pac").spec(),
-                        true /* pac_mandatory */));
+  pref_service->SetDict(proxy_config::prefs::kProxy,
+                        ProxyConfigDictionary::CreatePacScript(
+                            embedded_test_server()->GetURL("/self.pac").spec(),
+                            true /* pac_mandatory */));
   // Flush the proxy configuration change over the Mojo pipe to avoid any races.
   ProfileNetworkContextServiceFactory::GetForContext(browser()->profile())
       ->FlushProxyConfigMonitorForTesting();
@@ -5021,10 +5021,10 @@
     ASSERT_TRUE(proxy_cors_server_.Start());
 
     PrefService* pref_service = browser()->profile()->GetPrefs();
-    pref_service->Set(proxy_config::prefs::kProxy,
-                      ProxyConfigDictionary::CreateFixedServers(
-                          proxy_cors_server_.host_port_pair().ToString(),
-                          "accounts.google.com"));
+    pref_service->SetDict(proxy_config::prefs::kProxy,
+                          ProxyConfigDictionary::CreateFixedServers(
+                              proxy_cors_server_.host_port_pair().ToString(),
+                              "accounts.google.com"));
 
     // Flush the proxy configuration change to avoid any races.
     ProfileNetworkContextServiceFactory::GetForContext(browser()->profile())
diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc
index 228a71a..c5031d62 100644
--- a/chrome/browser/extensions/extension_management.cc
+++ b/chrome/browser/extensions/extension_management.cc
@@ -450,11 +450,7 @@
   // Parse default settings.
   const base::Value wildcard("*");
   if ((denied_list_pref &&
-       // TODO(crbug.com/1187106): Use base::Contains once |denied_list_pref| is
-       // not a ListValue.
-       std::find(denied_list_pref->GetList().begin(),
-                 denied_list_pref->GetList().end(),
-                 wildcard) != denied_list_pref->GetList().end()) ||
+       base::Contains(denied_list_pref->GetList(), wildcard)) ||
       (extension_request_pref && extension_request_pref->GetBool())) {
     default_settings_->installation_mode = INSTALLATION_BLOCKED;
   }
diff --git a/chrome/browser/extensions/extension_service_test_with_install.cc b/chrome/browser/extensions/extension_service_test_with_install.cc
index b23a9e1d..37638da 100644
--- a/chrome/browser/extensions/extension_service_test_with_install.cc
+++ b/chrome/browser/extensions/extension_service_test_with_install.cc
@@ -6,6 +6,7 @@
 
 #include "base/bind.h"
 #include "base/files/file_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/task_environment.h"
 #include "chrome/browser/extensions/chrome_test_extension_loader.h"
@@ -394,8 +395,7 @@
     UnloadedExtensionReason reason) {
   unloaded_id_ = extension->id();
   unloaded_reason_ = reason;
-  auto i = std::find(loaded_extensions_.begin(), loaded_extensions_.end(),
-                     extension);
+  auto i = base::ranges::find(loaded_extensions_, extension);
   // TODO(erikkay) fix so this can be an assert.  Right now the tests
   // are manually calling `ClearLoadedExtensions` since this method is not
   // called by reloads, so this isn't doable.
diff --git a/chrome/browser/extensions/window_controller_list.cc b/chrome/browser/extensions/window_controller_list.cc
index 527364bc..cf354e08 100644
--- a/chrome/browser/extensions/window_controller_list.cc
+++ b/chrome/browser/extensions/window_controller_list.cc
@@ -4,9 +4,9 @@
 
 #include "chrome/browser/extensions/window_controller_list.h"
 
-#include <algorithm>
-
+#include "base/containers/contains.h"
 #include "base/observer_list.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/extensions/api/tabs/windows_util.h"
 #include "chrome/browser/extensions/chrome_extension_function_details.h"
 #include "chrome/browser/extensions/window_controller_list_observer.h"
@@ -38,7 +38,7 @@
 }
 
 void WindowControllerList::RemoveExtensionWindow(WindowController* window) {
-  auto iter = std::find(windows_.begin(), windows_.end(), window);
+  auto iter = base::ranges::find(windows_, window);
   if (iter != windows_.end()) {
     windows_.erase(iter);
     for (auto& observer : observers_)
@@ -47,8 +47,7 @@
 }
 
 void WindowControllerList::NotifyWindowBoundsChanged(WindowController* window) {
-  auto iter = std::find(windows_.begin(), windows_.end(), window);
-  if (iter != windows_.end()) {
+  if (base::Contains(windows_, window)) {
     for (auto& observer : observers_)
       observer.OnWindowBoundsChanged(window);
   }
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/NativeViewListRenderer.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/NativeViewListRenderer.java
index 0e63225..fd034ed 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/NativeViewListRenderer.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/NativeViewListRenderer.java
@@ -169,5 +169,11 @@
         public void scrollToPositionWithOffset(int position, int offset) {
             mLayoutManager.scrollToPositionWithOffset(position, offset);
         }
+
+        @Override
+        public void setSpanCount(int spanCount) {
+            throw new UnsupportedOperationException(
+                    "Cannot set span count when using linear layout.");
+        }
     }
 }
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/NativeViewListRendererTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/NativeViewListRendererTest.java
index c913559..1ec54d7 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/NativeViewListRendererTest.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/NativeViewListRendererTest.java
@@ -203,4 +203,14 @@
         assertEquals(expectedLayoutManager.findLastVisibleItemPosition(),
                 helper.findLastVisibleItemPosition());
     }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void testLayoutHelperSetSpanCount() {
+        mManager.addContents(0,
+                Arrays.asList(new NtpListContentManager.FeedContent[] {
+                        createContent("1"), createContent("2"), createContent("3")}));
+        mRenderer.bind(mManager);
+
+        mRenderer.getListLayoutHelper().setSpanCount(3);
+    }
 }
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/sort_ui/FeedOptionsCoordinator.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/sort_ui/FeedOptionsCoordinator.java
index e91d8b24..09ce1ee 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/sort_ui/FeedOptionsCoordinator.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/sort_ui/FeedOptionsCoordinator.java
@@ -8,6 +8,7 @@
 import android.view.LayoutInflater;
 import android.view.View;
 
+import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
 import androidx.annotation.VisibleForTesting;
 
@@ -28,6 +29,12 @@
  * A coordinator for the feed options panel.
  */
 public class FeedOptionsCoordinator {
+    /** Listener for change in options selection. */
+    public interface OptionChangedListener {
+        /** Listener for when a feed option selection changes. */
+        void onOptionChanged();
+    }
+
     /** Method for translating between model changes and corresponding view updates. */
     static void bind(PropertyModel model, FeedOptionsView view, PropertyKey key) {
         if (key == FeedOptionsProperties.VISIBILITY_KEY) {
@@ -39,6 +46,8 @@
     private final Context mContext;
     private List<PropertyModel> mChipModels;
     private PropertyModel mModel;
+    @Nullable
+    private OptionChangedListener mOptionsListener;
 
     public FeedOptionsCoordinator(Context context) {
         // We don't use ChipsCoordinator here because RecyclerView does not play
@@ -60,6 +69,11 @@
         PropertyModelChangeProcessor.create(mModel, mView, FeedOptionsCoordinator::bind);
     }
 
+    /** Sets listener for feed options. */
+    public void setOptionsListener(OptionChangedListener mOptionsListener) {
+        this.mOptionsListener = mOptionsListener;
+    }
+
     /** Returns the view that this coordinator manages. */
     public View getView() {
         return mView;
@@ -80,6 +94,11 @@
         mModel.set(FeedOptionsProperties.VISIBILITY_KEY, false);
     }
 
+    /** Returns Id of selection option. */
+    public @ContentOrder int getSelectedOptionId() {
+        return FeedServiceBridge.getContentOrderForWebFeed();
+    }
+
     @VisibleForTesting
     void onOptionSelected(PropertyModel selectedOption) {
         for (PropertyModel model : mChipModels) {
@@ -87,9 +106,11 @@
                 model.set(ChipProperties.SELECTED, false);
             }
         }
-
         selectedOption.set(ChipProperties.SELECTED, true);
         FeedServiceBridge.setContentOrderForWebFeed(selectedOption.get(ChipProperties.ID));
+        if (mOptionsListener != null) {
+            mOptionsListener.onOptionChanged();
+        }
     }
 
     private PropertyModel createChipModel(@ContentOrder int id, @StringRes int textId,
@@ -106,7 +127,7 @@
 
     private List<PropertyModel> createAndBindChips() {
         @ContentOrder
-        int currentSort = FeedServiceBridge.getContentOrderForWebFeed();
+        int currentSort = getSelectedOptionId();
         List<PropertyModel> chipModels = new ArrayList<>();
         chipModels.add(createChipModel(ContentOrder.GROUPED, R.string.feed_sort_publisher,
                 currentSort == ContentOrder.GROUPED, R.string.feed_options_sort_by_grouped));
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/sort_ui/FeedOptionsCoordinatorTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/sort_ui/FeedOptionsCoordinatorTest.java
index 24be010d..0f512d2 100644
--- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/sort_ui/FeedOptionsCoordinatorTest.java
+++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/sort_ui/FeedOptionsCoordinatorTest.java
@@ -30,6 +30,7 @@
 import org.chromium.ui.modelutil.PropertyModel;
 
 import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Tests for {@link FeedOptionsCoordinator}.
@@ -123,6 +124,8 @@
 
     @Test
     public void testOptionsSelected() {
+        AtomicBoolean listenerCalled = new AtomicBoolean(false);
+        mCoordinator.setOptionsListener(() -> { listenerCalled.set(true); });
         List<PropertyModel> chipModels = mCoordinator.getChipModelsForTest();
         chipModels.get(0).set(ChipProperties.SELECTED, false);
         chipModels.get(1).set(ChipProperties.SELECTED, true);
@@ -131,5 +134,6 @@
 
         assertFalse(chipModels.get(1).get(ChipProperties.SELECTED));
         assertTrue(chipModels.get(0).get(ChipProperties.SELECTED));
+        assertTrue(listenerCalled.get());
     }
 }
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 9f1c0a8b..211a077a8 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -1407,6 +1407,11 @@
     "expiry_milestone": -1
   },
   {
+    "name": "disable-feed-ios14",
+    "owners": [ "justincohen", "adamta" ],
+    "expiry_milestone": 108
+  },
+  {
     "name": "disable-idle-sockets-close-on-memory-pressure",
     "owners": [ "pmarko" ],
     "expiry_milestone": 112
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthController.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthController.java
index 82185e9..b1dc445 100644
--- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthController.java
+++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthController.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.incognito.reauth;
 
+import androidx.annotation.NonNull;
+
 /**
  * A public API which can be used by other non re-auth clients to get information about the
  * Incognito re-authentication.
@@ -22,6 +24,24 @@
     boolean isIncognitoReauthPending();
 
     /**
+     * A method to add an {@link IncognitoReauthCallback}.
+     *
+     * @param incognitoReauthCallback {@link IncognitoReauthCallback} that the clients can add to be
+     *         notified when the user attempts re-authentication in the Incognito page.
+     */
+    void addIncognitoReauthCallback(
+            @NonNull IncognitoReauthManager.IncognitoReauthCallback incognitoReauthCallback);
+
+    /**
+     * A method to remove the {@link IncognitoReauthCallback}.
+     *
+     * @param incognitoReauthCallback {@link IncognitoReauthCallback} that the clients added to be
+     *         notified when the user attempts re-authentication in the Incognito page.
+     */
+    void removeIncognitoReauthCallback(
+            @NonNull IncognitoReauthManager.IncognitoReauthCallback incognitoReauthCallback);
+
+    /**
      * TODO(crbug.com/1227656): This method is ill-placed. Find a better design to restrict
      * non-intended clients to call this method.
      */
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerImpl.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerImpl.java
index dd89386..466ed26 100644
--- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerImpl.java
+++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerImpl.java
@@ -9,6 +9,7 @@
 import androidx.activity.OnBackPressedCallback;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 
 import org.chromium.base.Callback;
 import org.chromium.base.CallbackController;
@@ -28,6 +29,9 @@
 import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
 import org.chromium.ui.modaldialog.DialogDismissalCause;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * This is the access point for showing the Incognito re-auth dialog. It controls building the
  * {@link IncognitoReauthCoordinator} and showing/hiding the re-auth dialog. The {@link
@@ -44,6 +48,13 @@
     // incognito tabs present before Chrome went to background.
     public static final String KEY_IS_INCOGNITO_REAUTH_PENDING = "incognitoReauthPending";
 
+    /**
+     * A list of all {@link IncognitoReauthCallback} that would be triggered from
+     * |mIncognitoReauthCallback|.
+     */
+    private final List<IncognitoReauthManager.IncognitoReauthCallback>
+            mIncognitoReauthCallbackList = new ArrayList<>();
+
     // This callback is fired when the user clicks on "Unlock Incognito" option.
     // This contains the logic to not require further re-authentication if the last one was a
     // success. Please note, a re-authentication would be required again when Chrome is brought to
@@ -53,16 +64,29 @@
                 @Override
                 public void onIncognitoReauthNotPossible() {
                     hideDialogIfShowing(DialogDismissalCause.ACTION_ON_DIALOG_NOT_POSSIBLE);
+                    for (IncognitoReauthManager.IncognitoReauthCallback callback :
+                            mIncognitoReauthCallbackList) {
+                        callback.onIncognitoReauthNotPossible();
+                    }
                 }
 
                 @Override
                 public void onIncognitoReauthSuccess() {
                     mIncognitoReauthPending = false;
                     hideDialogIfShowing(DialogDismissalCause.ACTION_ON_DIALOG_COMPLETED);
+                    for (IncognitoReauthManager.IncognitoReauthCallback callback :
+                            mIncognitoReauthCallbackList) {
+                        callback.onIncognitoReauthSuccess();
+                    }
                 }
 
                 @Override
-                public void onIncognitoReauthFailure() {}
+                public void onIncognitoReauthFailure() {
+                    for (IncognitoReauthManager.IncognitoReauthCallback callback :
+                            mIncognitoReauthCallbackList) {
+                        callback.onIncognitoReauthFailure();
+                    }
+                }
             };
 
     // If the user has closed all Incognito tabs, then they don't need to go through re-auth to open
@@ -218,6 +242,26 @@
     }
 
     /**
+     * Override from {@link IncognitoReauthController}.
+     */
+    @Override
+    public void addIncognitoReauthCallback(
+            @NonNull IncognitoReauthManager.IncognitoReauthCallback incognitoReauthCallback) {
+        if (!mIncognitoReauthCallbackList.contains(incognitoReauthCallback)) {
+            mIncognitoReauthCallbackList.add(incognitoReauthCallback);
+        }
+    }
+
+    /**
+     * Override from {@link IncognitoReauthController}.
+     */
+    @Override
+    public void removeIncognitoReauthCallback(
+            @NonNull IncognitoReauthManager.IncognitoReauthCallback incognitoReauthCallback) {
+        mIncognitoReauthCallbackList.remove(incognitoReauthCallback);
+    }
+
+    /**
      * Override from {@link StartStopWithNativeObserver}. This relays the signal that Chrome was
      * brought to foreground.
      */
@@ -268,6 +312,11 @@
         showDialogIfRequired();
     }
 
+    @VisibleForTesting
+    IncognitoReauthManager.IncognitoReauthCallback getIncognitoReauthCallbackForTesting() {
+        return mIncognitoReauthCallback;
+    }
+
     /**
      * TODO(crbug.com/1227656): Add an extra check on IncognitoReauthManager#canAuthenticate method
      * if needed here to tackle the case where a re-authentication might not be possible from the
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerImplTest.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerImplTest.java
index 06c45f9b..c9a2a38 100644
--- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerImplTest.java
+++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerImplTest.java
@@ -13,9 +13,11 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
 import androidx.test.filters.MediumTest;
+import androidx.test.filters.SmallTest;
 
 import org.junit.After;
 import org.junit.Before;
@@ -81,6 +83,8 @@
     private PrefService mPrefServiceMock;
     @Mock
     private Runnable mBackPressInReauthFullScreenRunnableMock;
+    @Mock
+    private IncognitoReauthManager.IncognitoReauthCallback mIncognitoReauthCallbackMock;
 
     @Captor
     ArgumentCaptor<TabModelSelectorObserver> mTabModelSelectorObserverCaptor;
@@ -330,4 +334,29 @@
                         + " fresh Incognito session.",
                 mIncognitoReauthController.isReauthPageShowing());
     }
+
+    @Test
+    @SmallTest
+    public void testAddIncognitoReauthCallback_IsHookedWithMainCallback() {
+        doNothing().when(mIncognitoReauthCallbackMock).onIncognitoReauthSuccess();
+        mIncognitoReauthController.addIncognitoReauthCallback(mIncognitoReauthCallbackMock);
+        mIncognitoReauthController.getIncognitoReauthCallbackForTesting()
+                .onIncognitoReauthSuccess();
+        verify(mIncognitoReauthCallbackMock, times(1)).onIncognitoReauthSuccess();
+    }
+
+    @Test
+    @SmallTest
+    public void testRemoveIncognitoReauthCallback_IsUnHookedWithMainCallback() {
+        doNothing().when(mIncognitoReauthCallbackMock).onIncognitoReauthSuccess();
+        mIncognitoReauthController.addIncognitoReauthCallback(mIncognitoReauthCallbackMock);
+        mIncognitoReauthController.getIncognitoReauthCallbackForTesting()
+                .onIncognitoReauthSuccess();
+        verify(mIncognitoReauthCallbackMock, times(1)).onIncognitoReauthSuccess();
+
+        mIncognitoReauthController.removeIncognitoReauthCallback(mIncognitoReauthCallbackMock);
+        mIncognitoReauthController.getIncognitoReauthCallbackForTesting()
+                .onIncognitoReauthSuccess();
+        verifyNoMoreInteractions(mIncognitoReauthCallbackMock);
+    }
 }
diff --git a/chrome/browser/media/router/BUILD.gn b/chrome/browser/media/router/BUILD.gn
index 526ae99..8ab1205 100644
--- a/chrome/browser/media/router/BUILD.gn
+++ b/chrome/browser/media/router/BUILD.gn
@@ -113,8 +113,6 @@
     public_deps += [ "//components/media_router/common/mojom:logger" ]
 
     sources += [
-      "logger_list.cc",
-      "logger_list.h",
       "mojo/media_router_desktop.cc",
       "mojo/media_router_desktop.h",
       "mojo/media_router_mojo_impl.cc",
@@ -170,6 +168,8 @@
       "providers/wired_display/wired_display_presentation_receiver_factory.h",
     ]
 
+    deps += [ ":logger_list" ]
+
     if (is_win) {
       sources += [
         "mojo/media_route_provider_util_win.cc",
@@ -322,6 +322,7 @@
       "providers/wired_display/wired_display_media_route_provider_unittest.cc",
     ]
     deps += [
+      ":logger_list",
       ":test_support",
       "//chrome/browser/media/router/discovery:discovery",
       "//chrome/browser/media/router/discovery/access_code:access_code_cast_feature",
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
index edc7b63..16e7827c 100644
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
@@ -16,6 +16,7 @@
 #include "base/feature_list.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/sparse_histogram.h"
+#include "base/power_monitor/power_monitor_buildflags.h"
 #include "base/rand_util.h"
 #include "base/system/sys_info.h"
 #include "base/task/task_traits.h"
@@ -32,8 +33,6 @@
 #include "chrome/browser/enterprise/browser_management/management_service_factory.h"
 #include "chrome/browser/google/google_brand.h"
 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
-#include "chrome/browser/metrics/power/power_metrics_reporter.h"
-#include "chrome/browser/metrics/power/process_monitor.h"
 #include "chrome/browser/metrics/process_memory_metrics_emitter.h"
 #include "chrome/browser/shell_integration.h"
 #include "components/flags_ui/pref_service_flags_storage.h"
@@ -48,7 +47,11 @@
 #include "ui/display/screen.h"
 
 #if !BUILDFLAG(IS_ANDROID)
+#include "base/power_monitor/battery_state_sampler.h"
 #include "chrome/browser/metrics/first_web_contents_profiler.h"
+#include "chrome/browser/metrics/power/battery_discharge_reporter.h"
+#include "chrome/browser/metrics/power/power_metrics_reporter.h"
+#include "chrome/browser/metrics/power/process_monitor.h"
 #include "chrome/browser/metrics/tab_stats/tab_stats_tracker.h"
 #endif  // !BUILDFLAG(IS_ANDROID)
 
@@ -658,8 +661,23 @@
             g_browser_process->local_state()));
   }
 
-  // Only instantiate the PowerMetricsReporter if |process_monitor_| exists.
-  // This is always the case for Chrome but not for the unit tests.
+  // Instantiate the power-related metrics reporters.
+
+  // BatteryDischargeRateReporter reports the system-wide battery discharge
+  // rate. It depends on the TabStatsTracker to determine the usage scenario,
+  // and the BatteryStateSampler to determine the battery level.
+  // The TabStatsTracker always exists (except during unit tests), while the
+  // BatteryStateSampler only exists on platform where a BatteryLevelProvider
+  // implementation exists.
+  if (metrics::TabStatsTracker::GetInstance() &&
+      base::BatteryStateSampler::Get()) {
+    battery_discharge_reporter_ = std::make_unique<BatteryDischargeReporter>(
+        base::BatteryStateSampler::Get());
+  }
+
+  // PowerMetricsReporter focus solely on Chrome-specific metrics that affect
+  // power (CPU time, wake ups, etc.). Only instantiate it if |process_monitor_|
+  // exists. This is always the case for Chrome but not for the unit tests.
   if (process_monitor_) {
     power_metrics_reporter_ =
         std::make_unique<PowerMetricsReporter>(process_monitor_.get());
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h
index 8147459..2f8a19c 100644
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h
@@ -15,8 +15,12 @@
 #include "ui/display/display_observer.h"
 
 class ChromeBrowserMainParts;
+
+#if !BUILDFLAG(IS_ANDROID)
+class BatteryDischargeReporter;
 class PowerMetricsReporter;
 class ProcessMonitor;
+#endif
 
 namespace chrome {
 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts);
@@ -76,6 +80,8 @@
 
   // Reports power metrics.
   std::unique_ptr<PowerMetricsReporter> power_metrics_reporter_;
+
+  std::unique_ptr<BatteryDischargeReporter> battery_discharge_reporter_;
 #endif  // !BUILDFLAG(IS_ANDROID)
 };
 
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index 7787209..d4106ac 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -84,7 +84,6 @@
 #include "components/metrics/demographics/demographic_metrics_provider.h"
 #include "components/metrics/drive_metrics_provider.h"
 #include "components/metrics/entropy_state_provider.h"
-#include "components/metrics/form_factor_metrics_provider.h"
 #include "components/metrics/metrics_log_uploader.h"
 #include "components/metrics/metrics_pref_names.h"
 #include "components/metrics/metrics_reporting_default_state.h"
@@ -98,6 +97,7 @@
 #include "components/metrics/persistent_histograms.h"
 #include "components/metrics/sampling_metrics_provider.h"
 #include "components/metrics/stability_metrics_helper.h"
+#include "components/metrics/ui/form_factor_metrics_provider.h"
 #include "components/metrics/ui/screen_info_metrics_provider.h"
 #include "components/metrics/url_constants.h"
 #include "components/metrics/version_utils.h"
diff --git a/chrome/browser/metrics/power/battery_discharge_reporter.cc b/chrome/browser/metrics/power/battery_discharge_reporter.cc
new file mode 100644
index 0000000..3c6a40f
--- /dev/null
+++ b/chrome/browser/metrics/power/battery_discharge_reporter.cc
@@ -0,0 +1,109 @@
+// 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/metrics/power/battery_discharge_reporter.h"
+
+#include <utility>
+
+#include "base/bind.h"
+#include "chrome/browser/metrics/power/power_metrics.h"
+#include "chrome/browser/metrics/power/process_metrics_recorder_util.h"
+#include "chrome/browser/metrics/power/usage_scenario.h"
+
+#if BUILDFLAG(IS_MAC)
+#include "base/metrics/histogram_functions.h"
+#endif  // BUILDFLAG(IS_MAC)
+
+namespace {
+
+bool IsWithinTolerance(base::TimeDelta value,
+                       base::TimeDelta expected,
+                       base::TimeDelta tolerance) {
+  return (value - expected).magnitude() < tolerance;
+}
+
+}  // namespace
+
+BatteryDischargeReporter::BatteryDischargeReporter(
+    base::BatteryStateSampler* battery_state_sampler,
+    UsageScenarioDataStore* battery_usage_scenario_data_store)
+    : battery_usage_scenario_data_store_(battery_usage_scenario_data_store) {
+  if (!battery_usage_scenario_data_store_) {
+    battery_usage_scenario_tracker_ = std::make_unique<UsageScenarioTracker>();
+    battery_usage_scenario_data_store_ =
+        battery_usage_scenario_tracker_->data_store();
+  }
+
+  scoped_battery_state_sampler_observation_.Observe(battery_state_sampler);
+}
+
+BatteryDischargeReporter::~BatteryDischargeReporter() = default;
+
+void BatteryDischargeReporter::OnBatteryStateSampled(
+    const absl::optional<base::BatteryLevelProvider::BatteryState>&
+        battery_state) {
+  base::TimeTicks now_ticks = base::TimeTicks::Now();
+
+  // First sampling event. Remember the time and skip.
+  if (!last_event_time_ticks_) {
+    last_event_time_ticks_ = now_ticks;
+    last_battery_state_ = battery_state;
+    return;
+  }
+
+  base::TimeDelta sampling_event_delta = now_ticks - *last_event_time_ticks_;
+  *last_event_time_ticks_ = now_ticks;
+
+#if BUILDFLAG(IS_MAC)
+  RecordIOPMPowerSourceSampleEventDelta(sampling_event_delta);
+#endif
+
+  // Evaluate battery discharge mode and rate.
+  auto battery_discharge = GetBatteryDischargeDuringInterval(
+      last_battery_state_, battery_state, sampling_event_delta);
+  last_battery_state_ = battery_state;
+
+  // Intervals are expected to be approximately 1 minute long. Exclude samples
+  // where the interval length deviate significantly from that value. 1 second
+  // tolerance was chosen to include ~70% of all samples.
+  if (battery_discharge.mode == BatteryDischargeMode::kDischarging &&
+      !IsWithinTolerance(sampling_event_delta, base::Minutes(1),
+                         base::Seconds(1))) {
+    battery_discharge.mode = BatteryDischargeMode::kInvalidInterval;
+  }
+
+  auto interval_data = battery_usage_scenario_data_store_->ResetIntervalData();
+
+  // Get scenario data.
+  const auto long_interval_scenario_params =
+      GetLongIntervalScenario(interval_data);
+  // Histograms are recorded without suffix and with a scenario-specific
+  // suffix.
+  const std::vector<const char*> long_interval_suffixes{
+      "", long_interval_scenario_params.histogram_suffix};
+  ReportAlignedBatteryHistograms(sampling_event_delta, battery_discharge,
+                                 is_initial_interval_, long_interval_suffixes);
+  is_initial_interval_ = false;
+}
+
+#if BUILDFLAG(IS_MAC)
+void BatteryDischargeReporter::RecordIOPMPowerSourceSampleEventDelta(
+    base::TimeDelta sampling_event_delta) {
+  // The delta is expected to be almost always 60 seconds. Split the buckets for
+  // 0.2s granularity (10s interval with 50 buckets + 1 underflow bucket + 1
+  // overflow bucket) around that value.
+  base::HistogramBase* histogram = base::LinearHistogram::FactoryTimeGet(
+      "Power.IOPMPowerSource.SamplingEventDelta",
+      /*min=*/base::Seconds(55), /*max=*/base::Seconds(65), /*buckets=*/52,
+      base::HistogramBase::kUmaTargetedHistogramFlag);
+  histogram->AddTime(sampling_event_delta);
+
+  // Same as the above but using a range that starts from zero and significantly
+  // goes beyond the expected mean time of |sampling_event_delta| (which is 60
+  // seconds.).
+  base::UmaHistogramMediumTimes(
+      "Power.IOPMPowerSource.SamplingEventDelta.MediumTimes",
+      sampling_event_delta);
+}
+#endif  // BUILDFLAG(IS_MAC)
diff --git a/chrome/browser/metrics/power/battery_discharge_reporter.h b/chrome/browser/metrics/power/battery_discharge_reporter.h
new file mode 100644
index 0000000..611ea93
--- /dev/null
+++ b/chrome/browser/metrics/power/battery_discharge_reporter.h
@@ -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.
+
+#ifndef CHROME_BROWSER_METRICS_POWER_BATTERY_DISCHARGE_REPORTER_H_
+#define CHROME_BROWSER_METRICS_POWER_BATTERY_DISCHARGE_REPORTER_H_
+
+#include <memory>
+
+#include "base/power_monitor/battery_state_sampler.h"
+#include "base/power_monitor/power_monitor_buildflags.h"
+#include "base/scoped_observation.h"
+#include "base/time/time.h"
+#include "build/build_config.h"
+#include "chrome/browser/metrics/usage_scenario/usage_scenario_data_store.h"
+#include "chrome/browser/metrics/usage_scenario/usage_scenario_tracker.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
+
+class BatteryDischargeReporter : public base::BatteryStateSampler::Observer {
+ public:
+  explicit BatteryDischargeReporter(
+      base::BatteryStateSampler* battery_state_sampler,
+      UsageScenarioDataStore* battery_usage_scenario_data_store = nullptr);
+
+  BatteryDischargeReporter(const BatteryDischargeReporter&) = delete;
+  BatteryDischargeReporter& operator=(const BatteryDischargeReporter&) = delete;
+  BatteryDischargeReporter(BatteryDischargeReporter&&) = delete;
+  BatteryDischargeReporter& operator=(BatteryDischargeReporter&&) = delete;
+
+  ~BatteryDischargeReporter() override;
+
+  // base::BatteryStateSampler::Observer:
+  void OnBatteryStateSampled(
+      const absl::optional<base::BatteryLevelProvider::BatteryState>&
+          battery_state) override;
+
+ private:
+#if BUILDFLAG(IS_MAC)
+  // Records the time delta between two events received from IOPMPowerSource.
+  void RecordIOPMPowerSourceSampleEventDelta(
+      base::TimeDelta sampling_event_delta);
+#endif  // BUILDFLAG(IS_MAC)
+
+  base::ScopedObservation<base::BatteryStateSampler,
+                          base::BatteryStateSampler::Observer>
+      scoped_battery_state_sampler_observation_{this};
+
+  // Track usage scenarios for the sampling interval.
+  std::unique_ptr<UsageScenarioTracker> battery_usage_scenario_tracker_;
+  raw_ptr<UsageScenarioDataStore> battery_usage_scenario_data_store_;
+
+  // The time ticks from when the last event was received from
+  // |sampling_event_source_|.
+  absl::optional<base::TimeTicks> last_event_time_ticks_;
+
+  absl::optional<base::BatteryLevelProvider::BatteryState> last_battery_state_;
+
+  // The first battery sample is potentially outdated because it is not taken
+  // upon receiving a notification from the OS. This is used to differentiate
+  // the first battery discharge histogram sample from the rest as that initial
+  // one is potentially skewed.
+  bool is_initial_interval_ = true;
+};
+
+#endif  // CHROME_BROWSER_METRICS_POWER_BATTERY_DISCHARGE_REPORTER_H_
diff --git a/chrome/browser/metrics/power/battery_discharge_reporter_unittest.cc b/chrome/browser/metrics/power/battery_discharge_reporter_unittest.cc
new file mode 100644
index 0000000..b40702c3
--- /dev/null
+++ b/chrome/browser/metrics/power/battery_discharge_reporter_unittest.cc
@@ -0,0 +1,235 @@
+// Copyright 2021 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/metrics/power/battery_discharge_reporter.h"
+
+#include <memory>
+
+#include "base/power_monitor/battery_level_provider.h"
+#include "base/power_monitor/battery_state_sampler.h"
+#include "base/power_monitor/sampling_event_source.h"
+#include "base/strings/strcat.h"
+#include "base/test/metrics/histogram_tester.h"
+#include "chrome/browser/metrics/power/power_metrics.h"
+#include "chrome/browser/metrics/usage_scenario/usage_scenario_data_store.h"
+#include "content/public/test/browser_task_environment.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+constexpr const char* kBatteryDischargeModeHistogramName =
+    "Power.BatteryDischargeMode3";
+constexpr const char* kBatteryDischargeRateHistogramName =
+    "Power.BatteryDischargeRate3";
+
+constexpr base::TimeDelta kTolerableDrift = base::Seconds(1);
+constexpr int kFullBatteryChargeLevel = 10000;
+constexpr int kHalfBatteryChargeLevel = 5000;
+
+absl::optional<base::BatteryLevelProvider::BatteryState> MakeBatteryState(
+    int current_capacity) {
+  return base::BatteryLevelProvider::BatteryState{
+      .battery_count = 1,
+      .is_external_power_connected = false,
+      .current_capacity = current_capacity,
+      .full_charged_capacity = kFullBatteryChargeLevel,
+      .charge_unit = base::BatteryLevelProvider::BatteryLevelUnit::kMAh};
+}
+
+struct HistogramSampleExpectation {
+  std::string histogram_name_prefix;
+  base::Histogram::Sample sample;
+};
+
+// For each histogram named after the combination of prefixes from
+// `expectations` and suffixes from `suffixes`, verifies that there is a unique
+// sample `expectation.sample`.
+void ExpectHistogramSamples(
+    base::HistogramTester* histogram_tester,
+    const std::vector<const char*>& suffixes,
+    const std::vector<HistogramSampleExpectation>& expectations) {
+  for (const char* suffix : suffixes) {
+    for (const auto& expectation : expectations) {
+      std::string histogram_name =
+          base::StrCat({expectation.histogram_name_prefix, suffix});
+      SCOPED_TRACE(histogram_name);
+      histogram_tester->ExpectUniqueSample(histogram_name, expectation.sample,
+                                           1);
+    }
+  }
+}
+
+class NoopSamplingEventSource : public base::SamplingEventSource {
+ public:
+  NoopSamplingEventSource() = default;
+  ~NoopSamplingEventSource() override = default;
+
+  bool Start(SamplingEventCallback callback) override { return true; }
+};
+
+class NoopBatteryLevelProvider : public base::BatteryLevelProvider {
+ public:
+  NoopBatteryLevelProvider() = default;
+  ~NoopBatteryLevelProvider() override = default;
+
+  void GetBatteryState(
+      base::OnceCallback<void(const absl::optional<BatteryState>&)> callback)
+      override {}
+};
+
+class TestUsageScenarioDataStoreImpl : public UsageScenarioDataStoreImpl {
+ public:
+  TestUsageScenarioDataStoreImpl() = default;
+  TestUsageScenarioDataStoreImpl(const TestUsageScenarioDataStoreImpl& rhs) =
+      delete;
+  TestUsageScenarioDataStoreImpl& operator=(
+      const TestUsageScenarioDataStoreImpl& rhs) = delete;
+  ~TestUsageScenarioDataStoreImpl() override = default;
+
+  IntervalData ResetIntervalData() override { return fake_data_; }
+
+ private:
+  IntervalData fake_data_;
+};
+
+class BatteryDischargeReporterTest : public testing::Test {
+ public:
+  BatteryDischargeReporterTest() = default;
+  BatteryDischargeReporterTest(const BatteryDischargeReporterTest& rhs) =
+      delete;
+  BatteryDischargeReporterTest& operator=(
+      const BatteryDischargeReporterTest& rhs) = delete;
+  ~BatteryDischargeReporterTest() override = default;
+
+ protected:
+  content::BrowserTaskEnvironment task_environment_{
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+
+  base::HistogramTester histogram_tester_;
+};
+
+}  // namespace
+
+TEST_F(BatteryDischargeReporterTest, Simple) {
+  TestUsageScenarioDataStoreImpl usage_scenario_data_store;
+
+  base::BatteryStateSampler battery_state_sampler(
+      std::make_unique<NoopSamplingEventSource>(),
+      std::make_unique<NoopBatteryLevelProvider>());
+  BatteryDischargeReporter battery_discharge_reporter(
+      &battery_state_sampler, &usage_scenario_data_store);
+
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel));
+  task_environment_.FastForwardBy(base::Minutes(1));
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel - 10));
+
+  const int64_t kExpectedDischargeRate = 10;
+
+  const std::vector<const char*> suffixes(
+      {"", ".Initial", ".ZeroWindow.Initial"});
+  ExpectHistogramSamples(
+      &histogram_tester_, suffixes,
+      {{kBatteryDischargeModeHistogramName,
+        static_cast<int64_t>(BatteryDischargeMode::kDischarging)}});
+  ExpectHistogramSamples(
+      &histogram_tester_, suffixes,
+      {{kBatteryDischargeRateHistogramName, kExpectedDischargeRate}});
+}
+
+TEST_F(BatteryDischargeReporterTest, BatteryDischargeCaptureIsTooLate) {
+  TestUsageScenarioDataStoreImpl usage_scenario_data_store;
+
+  base::BatteryStateSampler battery_state_sampler(
+      std::make_unique<NoopSamplingEventSource>(),
+      std::make_unique<NoopBatteryLevelProvider>());
+  BatteryDischargeReporter battery_discharge_reporter(
+      &battery_state_sampler, &usage_scenario_data_store);
+
+  battery_discharge_reporter.OnBatteryStateSampled(MakeBatteryState(5000));
+
+  const base::TimeDelta kTooLate = base::Minutes(1) + kTolerableDrift;
+  task_environment_.FastForwardBy(kTooLate);
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel - 10));
+
+  // No rate because the interval is invalid.
+  histogram_tester_.ExpectUniqueSample(kBatteryDischargeModeHistogramName,
+                                       BatteryDischargeMode::kInvalidInterval,
+                                       1);
+  histogram_tester_.ExpectTotalCount(kBatteryDischargeRateHistogramName, 0);
+}
+
+TEST_F(BatteryDischargeReporterTest, BatteryDischargeCaptureIsLate) {
+  TestUsageScenarioDataStoreImpl usage_scenario_data_store;
+
+  base::BatteryStateSampler battery_state_sampler(
+      std::make_unique<NoopSamplingEventSource>(),
+      std::make_unique<NoopBatteryLevelProvider>());
+  BatteryDischargeReporter battery_discharge_reporter(
+      &battery_state_sampler, &usage_scenario_data_store);
+
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel));
+
+  const base::TimeDelta kLate =
+      base::Minutes(1) + kTolerableDrift - base::Microseconds(1);
+  task_environment_.FastForwardBy(kLate);
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel - 10));
+
+  // No rate because the interval is invalid.
+  histogram_tester_.ExpectUniqueSample(kBatteryDischargeModeHistogramName,
+                                       BatteryDischargeMode::kDischarging, 1);
+  histogram_tester_.ExpectTotalCount(kBatteryDischargeRateHistogramName, 1);
+}
+
+TEST_F(BatteryDischargeReporterTest, BatteryDischargeCaptureIsTooEarly) {
+  TestUsageScenarioDataStoreImpl usage_scenario_data_store;
+
+  base::BatteryStateSampler battery_state_sampler(
+      std::make_unique<NoopSamplingEventSource>(),
+      std::make_unique<NoopBatteryLevelProvider>());
+  BatteryDischargeReporter battery_discharge_reporter(
+      &battery_state_sampler, &usage_scenario_data_store);
+
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel));
+
+  const base::TimeDelta kTooEarly = base::Minutes(1) - kTolerableDrift;
+  task_environment_.FastForwardBy(kTooEarly);
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel - 10));
+
+  // No rate because the interval is invalid.
+  histogram_tester_.ExpectUniqueSample(kBatteryDischargeModeHistogramName,
+                                       BatteryDischargeMode::kInvalidInterval,
+                                       1);
+  histogram_tester_.ExpectTotalCount(kBatteryDischargeRateHistogramName, 0);
+}
+
+TEST_F(BatteryDischargeReporterTest, BatteryDischargeCaptureIsEarly) {
+  TestUsageScenarioDataStoreImpl usage_scenario_data_store;
+
+  base::BatteryStateSampler battery_state_sampler(
+      std::make_unique<NoopSamplingEventSource>(),
+      std::make_unique<NoopBatteryLevelProvider>());
+  BatteryDischargeReporter battery_discharge_reporter(
+      &battery_state_sampler, &usage_scenario_data_store);
+
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel));
+
+  const base::TimeDelta kEarly =
+      base::Minutes(1) - kTolerableDrift + base::Microseconds(1);
+  task_environment_.FastForwardBy(kEarly);
+  battery_discharge_reporter.OnBatteryStateSampled(
+      MakeBatteryState(kHalfBatteryChargeLevel - 10));
+
+  // No rate because the interval is invalid.
+  histogram_tester_.ExpectUniqueSample(kBatteryDischargeModeHistogramName,
+                                       BatteryDischargeMode::kDischarging, 1);
+  histogram_tester_.ExpectTotalCount(kBatteryDischargeRateHistogramName, 1);
+}
diff --git a/chrome/browser/metrics/power/power_metrics.cc b/chrome/browser/metrics/power/power_metrics.cc
index a1724aa..701d257 100644
--- a/chrome/browser/metrics/power/power_metrics.cc
+++ b/chrome/browser/metrics/power/power_metrics.cc
@@ -21,6 +21,11 @@
 constexpr const char* kBatteryDischargeModeHistogramName =
     "Power.BatteryDischargeMode2";
 
+constexpr const char* kAlignedBatteryDischargeRateHistogramName =
+    "Power.BatteryDischargeRate3";
+constexpr const char* kAlignedBatteryDischargeModeHistogramName =
+    "Power.BatteryDischargeMode3";
+
 #if BUILDFLAG(IS_MAC)
 // Reports `proportion` of a time used to a histogram in permyriad (1/100 %).
 // `proportion` is 0.5 if half a CPU core or half total GPU time is used. It can
@@ -134,23 +139,50 @@
   return {BatteryDischargeMode::kDischarging, discharge_rate};
 }
 
-void ReportBatteryHistograms(base::TimeDelta interval_duration,
-                             BatteryDischarge battery_discharge,
-                             const std::vector<const char*>& suffixes) {
-  for (const char* suffix : suffixes) {
+void ReportBatteryHistograms(
+    base::TimeDelta interval_duration,
+    BatteryDischarge battery_discharge,
+    const std::vector<const char*>& scenario_suffixes) {
+  for (const char* scenario_suffix : scenario_suffixes) {
     base::UmaHistogramEnumeration(
-        base::StrCat({kBatteryDischargeModeHistogramName, suffix}),
+        base::StrCat({kBatteryDischargeModeHistogramName, scenario_suffix}),
         battery_discharge.mode);
 
     if (battery_discharge.mode == BatteryDischargeMode::kDischarging) {
       DCHECK(battery_discharge.rate.has_value());
       base::UmaHistogramCounts1000(
-          base::StrCat({kBatteryDischargeRateHistogramName, suffix}),
+          base::StrCat({kBatteryDischargeRateHistogramName, scenario_suffix}),
           *battery_discharge.rate);
     }
   }
 }
 
+void ReportAlignedBatteryHistograms(
+    base::TimeDelta interval_duration,
+    BatteryDischarge battery_discharge,
+    bool is_initial_interval,
+    const std::vector<const char*>& scenario_suffixes) {
+  const char* interval_type_suffixes[] = {
+      "", is_initial_interval ? ".Initial" : ".Periodic"};
+
+  for (const char* scenario_suffix : scenario_suffixes) {
+    for (const char* interval_type_suffix : interval_type_suffixes) {
+      base::UmaHistogramEnumeration(
+          base::StrCat({kAlignedBatteryDischargeModeHistogramName,
+                        scenario_suffix, interval_type_suffix}),
+          battery_discharge.mode);
+
+      if (battery_discharge.mode == BatteryDischargeMode::kDischarging) {
+        DCHECK(battery_discharge.rate.has_value());
+        base::UmaHistogramCounts1000(
+            base::StrCat({kAlignedBatteryDischargeRateHistogramName,
+                          scenario_suffix, interval_type_suffix}),
+            *battery_discharge.rate);
+      }
+    }
+  }
+}
+
 #if BUILDFLAG(IS_MAC)
 void ReportShortIntervalHistograms(
     const char* scenario_suffix,
diff --git a/chrome/browser/metrics/power/power_metrics.h b/chrome/browser/metrics/power/power_metrics.h
index 033d370..c9673630 100644
--- a/chrome/browser/metrics/power/power_metrics.h
+++ b/chrome/browser/metrics/power/power_metrics.h
@@ -56,10 +56,19 @@
         new_battery_state,
     base::TimeDelta interval_duration);
 
-// Report battery metrics to histograms with |suffixes|.
+// Report battery metrics to histograms with |scenario_suffixes|.
 void ReportBatteryHistograms(base::TimeDelta interval_duration,
                              BatteryDischarge battery_discharge,
-                             const std::vector<const char*>& suffixes);
+                             const std::vector<const char*>& scenario_suffixes);
+
+// Report battery metrics to histograms with |scenario_suffixes|. The difference
+// with the above version is that when possible, the intervals are aligned with
+// battery discharge notifications from the OS (MacOS only for now).
+void ReportAlignedBatteryHistograms(
+    base::TimeDelta interval_duration,
+    BatteryDischarge battery_discharge,
+    bool is_initial_interval,
+    const std::vector<const char*>& scenario_suffixes);
 
 #if BUILDFLAG(IS_MAC)
 void ReportShortIntervalHistograms(
diff --git a/chrome/browser/metrics/power/power_metrics_reporter.cc b/chrome/browser/metrics/power/power_metrics_reporter.cc
index 9ecab446..51d2a31 100644
--- a/chrome/browser/metrics/power/power_metrics_reporter.cc
+++ b/chrome/browser/metrics/power/power_metrics_reporter.cc
@@ -127,10 +127,6 @@
   }
 
 #if BUILDFLAG(IS_MAC)
-  iopm_power_source_sampling_event_source_.Start(
-      base::BindRepeating(&PowerMetricsReporter::OnIOPMPowerSourceSamplingEvent,
-                          base::Unretained(this)));
-
   coalition_resource_usage_provider_->Init();
 #endif
 
@@ -443,31 +439,4 @@
   }
   short_interval_begin_time_ = base::TimeTicks();
 }
-
-void PowerMetricsReporter::OnIOPMPowerSourceSamplingEvent() {
-  base::TimeTicks now_ticks = base::TimeTicks::Now();
-
-  if (!last_event_time_ticks_) {
-    last_event_time_ticks_ = now_ticks;
-    return;
-  }
-
-  // The delta is expected to be almost always 60 seconds. Split the buckets for
-  // 0.2s granularity (10s interval with 50 buckets + 1 underflow bucket + 1
-  // overflow bucket) around that value.
-  base::TimeDelta sampling_event_delta = now_ticks - *last_event_time_ticks_;
-  base::HistogramBase* histogram = base::LinearHistogram::FactoryTimeGet(
-      "Power.IOPMPowerSource.SamplingEventDelta",
-      /*min=*/base::Seconds(55), /*max=*/base::Seconds(65), /*buckets=*/52,
-      base::HistogramBase::kUmaTargetedHistogramFlag);
-  histogram->AddTime(sampling_event_delta);
-  *last_event_time_ticks_ = now_ticks;
-
-  // Same as the above but using a range that starts from zero and significantly
-  // goes beyond the expected mean time of |sampling_event_delta| (which is 60
-  // seconds.).
-  base::UmaHistogramMediumTimes(
-      "Power.IOPMPowerSource.SamplingEventDelta.MediumTimes",
-      sampling_event_delta);
-}
 #endif  // BUILDFLAG(IS_MAC)
diff --git a/chrome/browser/metrics/power/power_metrics_reporter.h b/chrome/browser/metrics/power/power_metrics_reporter.h
index 77c0813..16c242a 100644
--- a/chrome/browser/metrics/power/power_metrics_reporter.h
+++ b/chrome/browser/metrics/power/power_metrics_reporter.h
@@ -20,7 +20,6 @@
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
 #if BUILDFLAG(IS_MAC)
-#include "base/power_monitor/iopm_power_source_sampling_event_source.h"
 #include "chrome/browser/metrics/power/coalition_resource_usage_provider_mac.h"
 #endif  // BUILDFLAG(IS_MAC)
 
@@ -136,8 +135,6 @@
   void MaybeEmitHighCPUTraceEvent(
       const ScenarioParams& short_interval_scenario_params,
       const CoalitionResourceUsageRate& coalition_resource_usage_rate);
-
-  void OnIOPMPowerSourceSamplingEvent();
 #endif  // BUILDFLAG(IS_MAC)
 
   raw_ptr<ProcessMonitor> process_monitor_;
@@ -164,12 +161,6 @@
   // (MaybeEmitHighCPUTraceEvent()).
   base::TimeTicks short_interval_begin_time_;
 
-  base::IOPMPowerSourceSamplingEventSource
-      iopm_power_source_sampling_event_source_;
-
-  // The time ticks from when the last IOPMPowerSource event was received.
-  absl::optional<base::TimeTicks> last_event_time_ticks_;
-
   std::unique_ptr<CoalitionResourceUsageProvider>
       coalition_resource_usage_provider_;
 #endif  // BUILDFLAG(IS_MAC)
diff --git a/chrome/browser/net/load_timing_browsertest.cc b/chrome/browser/net/load_timing_browsertest.cc
index f2cff6d..7d65155 100644
--- a/chrome/browser/net/load_timing_browsertest.cc
+++ b/chrome/browser/net/load_timing_browsertest.cc
@@ -155,7 +155,7 @@
 IN_PROC_BROWSER_TEST_F(LoadTimingBrowserTest, Proxy) {
   ASSERT_TRUE(embedded_test_server()->Start());
 
-  browser()->profile()->GetPrefs()->Set(
+  browser()->profile()->GetPrefs()->SetDict(
       proxy_config::prefs::kProxy,
       ProxyConfigDictionary::CreateFixedServers(
           embedded_test_server()->host_port_pair().ToString(), std::string()));
diff --git a/chrome/browser/net/network_context_configuration_browsertest.cc b/chrome/browser/net/network_context_configuration_browsertest.cc
index 20e5b9c1f..a96caaae 100644
--- a/chrome/browser/net/network_context_configuration_browsertest.cc
+++ b/chrome/browser/net/network_context_configuration_browsertest.cc
@@ -462,9 +462,9 @@
   // Sets the proxy preference on a PrefService based on the NetworkContextType,
   // and waits for it to be applied.
   void SetProxyPref(const net::HostPortPair& host_port_pair) {
-    GetPrefService()->Set(proxy_config::prefs::kProxy,
-                          ProxyConfigDictionary::CreateFixedServers(
-                              host_port_pair.ToString(), std::string()));
+    GetPrefService()->SetDict(proxy_config::prefs::kProxy,
+                              ProxyConfigDictionary::CreateFixedServers(
+                                  host_port_pair.ToString(), std::string()));
 
     // Wait for the new ProxyConfig to be passed over the pipe. Needed because
     // Mojo doesn't guarantee ordering of events on different Mojo pipes, and
diff --git a/chrome/browser/net/private_network_access_browsertest.cc b/chrome/browser/net/private_network_access_browsertest.cc
index 1a5263da..f604abb 100644
--- a/chrome/browser/net/private_network_access_browsertest.cc
+++ b/chrome/browser/net/private_network_access_browsertest.cc
@@ -727,7 +727,7 @@
   EXPECT_TRUE(
       content::NavigateToURL(web_contents(), PublicNonSecureURL(*server)));
 
-  browser()->profile()->GetPrefs()->Set(
+  browser()->profile()->GetPrefs()->SetDict(
       proxy_config::prefs::kProxy,
       ProxyConfigDictionary::CreateFixedServers(
           server->host_port_pair().ToString(), ""));
diff --git a/chrome/browser/notifications/scheduler/internal/display_decider.cc b/chrome/browser/notifications/scheduler/internal/display_decider.cc
index 7825272..86ad20d 100644
--- a/chrome/browser/notifications/scheduler/internal/display_decider.cc
+++ b/chrome/browser/notifications/scheduler/internal/display_decider.cc
@@ -4,9 +4,8 @@
 
 #include "chrome/browser/notifications/scheduler/internal/display_decider.h"
 
-#include <algorithm>
-
 #include "base/memory/raw_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "base/time/clock.h"
 #include "chrome/browser/notifications/scheduler/internal/impression_types.h"
 #include "chrome/browser/notifications/scheduler/internal/notification_entry.h"
@@ -101,7 +100,7 @@
 
     // No previous shown notification, move the iterator to last element.
     // We will iterate through all client types later.
-    auto it = std::find(clients_.begin(), clients_.end(), last_shown_type_);
+    auto it = base::ranges::find(clients_, last_shown_type_);
     if (it == clients_.end()) {
       DCHECK_EQ(last_shown_type_, SchedulerClientType::kUnknown);
       last_shown_type_ = clients_.back();
diff --git a/chrome/browser/notifications/scheduler/internal/impression_history_tracker.cc b/chrome/browser/notifications/scheduler/internal/impression_history_tracker.cc
index b4d77904..24ebad65 100644
--- a/chrome/browser/notifications/scheduler/internal/impression_history_tracker.cc
+++ b/chrome/browser/notifications/scheduler/internal/impression_history_tracker.cc
@@ -4,12 +4,12 @@
 
 #include "chrome/browser/notifications/scheduler/internal/impression_history_tracker.h"
 
-#include <algorithm>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/check_op.h"
+#include "base/containers/contains.h"
 #include "base/cxx17_backports.h"
 #include "base/notreached.h"
 #include "chrome/browser/notifications/scheduler/internal/scheduler_utils.h"
@@ -211,10 +211,7 @@
   // Remove deprecated clients.
   for (auto it = client_states_.begin(); it != client_states_.end();) {
     auto client_type = it->first;
-    bool deprecated =
-        std::find(registered_clients_.begin(), registered_clients_.end(),
-                  client_type) == registered_clients_.end();
-    if (deprecated) {
+    if (!base::Contains(registered_clients_, client_type)) {
       store_->Delete(ToDatabaseKey(client_type),
                      base::BindOnce(&stats::LogDbOperation,
                                     stats::DatabaseType::kImpressionDb));
diff --git a/chrome/browser/offline_pages/android/auto_fetch_page_load_watcher.cc b/chrome/browser/offline_pages/android/auto_fetch_page_load_watcher.cc
index 01a1729..931224f 100644
--- a/chrome/browser/offline_pages/android/auto_fetch_page_load_watcher.cc
+++ b/chrome/browser/offline_pages/android/auto_fetch_page_load_watcher.cc
@@ -9,6 +9,7 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
 #include "chrome/browser/android/tab_android.h"
@@ -55,8 +56,7 @@
 
     for (int index = 0; index < model->GetTabCount(); ++index) {
       TabAndroid* tab = model->GetTabAt(index);
-      if (std::find(android_tab_ids.begin(), android_tab_ids.end(),
-                    tab->GetAndroidId()) != android_tab_ids.end()) {
+      if (base::Contains(android_tab_ids, tab->GetAndroidId())) {
         result[tab->GetAndroidId()] = AnroidTabInfo(*tab);
       }
     }
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java
index 52009c4..d2cf6c9 100644
--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java
+++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java
@@ -11,6 +11,7 @@
 import org.chromium.base.TimeUtils;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
 import org.chromium.chrome.browser.preferences.Pref;
 import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
@@ -48,6 +49,11 @@
      */
     @CalledByNative
     static boolean shouldShowErrorUi() {
+        if (ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
+                    ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ERROR_MESSAGES,
+                    "ignore_auth_error_message_timeouts", false)) {
+            return true;
+        }
         PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile());
         long lastShownTimestamp =
                 Long.valueOf(prefService.getString(Pref.UPM_ERROR_UI_SHOWN_TIMESTAMP));
diff --git a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridgeTest.java b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridgeTest.java
index 3472801..c9a4d57a 100644
--- a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridgeTest.java
+++ b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridgeTest.java
@@ -21,6 +21,7 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
@@ -31,6 +32,7 @@
 import org.chromium.base.TimeUtils;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.base.test.util.Features;
 import org.chromium.base.test.util.JniMocker;
 import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
 import org.chromium.chrome.browser.preferences.Pref;
@@ -59,6 +61,9 @@
             spy(new FakeAccountManagerFacade());
 
     @Rule
+    public TestRule mFeaturesProcessorRule = new Features.JUnitProcessor();
+
+    @Rule
     public AccountManagerTestRule mAccountManagerTestRule =
             new AccountManagerTestRule(mFakeAccountManagerFacade);
 
diff --git a/chrome/browser/pdf/pdf_extension_test.cc b/chrome/browser/pdf/pdf_extension_test.cc
index ecbd594..35e28885 100644
--- a/chrome/browser/pdf/pdf_extension_test.cc
+++ b/chrome/browser/pdf/pdf_extension_test.cc
@@ -21,6 +21,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
 #include "base/path_service.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -1587,7 +1588,7 @@
   // picked up by the browser zoom, then zoom to the next zoom level. This
   // ensures the test passes regardless of the initial default zoom level.
   std::vector<double> preset_zoom_levels = zoom::PageZoom::PresetZoomLevels(0);
-  auto it = std::find(preset_zoom_levels.begin(), preset_zoom_levels.end(), 0);
+  auto it = base::ranges::find(preset_zoom_levels, 0);
   ASSERT_NE(it, preset_zoom_levels.end());
   it++;
   ASSERT_NE(it, preset_zoom_levels.end());
diff --git a/chrome/browser/policy/test/proxy_policies_browsertest.cc b/chrome/browser/policy/test/proxy_policies_browsertest.cc
index f806756..7966b7b0 100644
--- a/chrome/browser/policy/test/proxy_policies_browsertest.cc
+++ b/chrome/browser/policy/test/proxy_policies_browsertest.cc
@@ -32,9 +32,9 @@
                       absl::optional<bool> expected_proxy_pac_mandatory,
                       const std::string& expected_proxy_bypass_list,
                       const ProxyPrefs::ProxyMode& expected_proxy_mode) {
-  const base::Value& value = prefs->GetValue(proxy_config::prefs::kProxy);
-  ASSERT_TRUE(value.is_dict());
-  ProxyConfigDictionary dict(value.Clone());
+  const base::Value::Dict& pref_dict =
+      prefs->GetDict(proxy_config::prefs::kProxy);
+  ProxyConfigDictionary dict(pref_dict.Clone());
   std::string s;
   bool b;
   if (expected_proxy_server.empty()) {
diff --git a/chrome/browser/policy/test/web_rtc_local_ips_allowed_urls_policy_browsertest.cc b/chrome/browser/policy/test/web_rtc_local_ips_allowed_urls_policy_browsertest.cc
index f44d893..368cca91 100644
--- a/chrome/browser/policy/test/web_rtc_local_ips_allowed_urls_policy_browsertest.cc
+++ b/chrome/browser/policy/test/web_rtc_local_ips_allowed_urls_policy_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include "base/values.h"
 
+#include "base/containers/contains.h"
 #include "chrome/browser/policy/policy_test_utils.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
@@ -52,9 +53,7 @@
   const auto& expected_urls = GenerateUrlList();
   EXPECT_EQ(expected_urls.size(), allowed_urls.size());
   for (const auto& allowed_url : allowed_urls) {
-    auto it =
-        std::find(expected_urls.begin(), expected_urls.end(), allowed_url);
-    EXPECT_TRUE(it != expected_urls.end());
+    EXPECT_TRUE(base::Contains(expected_urls, allowed_url));
   }
 }
 
diff --git a/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc b/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc
index c514873b7..21177e0c 100644
--- a/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc
+++ b/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/guid.h"
 #include "base/memory/ref_counted.h"
 #include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -628,8 +629,7 @@
   result.AppendMatches(matches);
   std::u16string user_text = u"google";
   predictor()->RegisterTransitionalMatches(user_text, result);
-  auto it = std::find(transitional_matches()->begin(),
-                      transitional_matches()->end(), user_text);
+  auto it = base::ranges::find(*transitional_matches(), user_text);
   ASSERT_NE(it, transitional_matches()->end());
   EXPECT_THAT(it->urls, ::testing::ElementsAre(urls[0], urls[1]));
 }
diff --git a/chrome/browser/predictors/preconnect_manager_unittest.cc b/chrome/browser/predictors/preconnect_manager_unittest.cc
index 6f284ad..b45f918 100644
--- a/chrome/browser/predictors/preconnect_manager_unittest.cc
+++ b/chrome/browser/predictors/preconnect_manager_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/format_macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "base/run_loop.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/metrics/histogram_tester.h"
@@ -160,8 +161,7 @@
 
  private:
   bool IsHangingHost(const GURL& url) const {
-    return std::find(hanging_hosts_.begin(), hanging_hosts_.end(),
-                     url.host()) != hanging_hosts_.end();
+    return base::Contains(hanging_hosts_, url.host());
   }
 
   using ResolveHostClientKey = std::pair<std::string, net::NetworkIsolationKey>;
diff --git a/chrome/browser/prefs/chrome_command_line_pref_store.cc b/chrome/browser/prefs/chrome_command_line_pref_store.cc
index 0877ad9..add36f4 100644
--- a/chrome/browser/prefs/chrome_command_line_pref_store.cc
+++ b/chrome/browser/prefs/chrome_command_line_pref_store.cc
@@ -138,27 +138,29 @@
 
 void ChromeCommandLinePrefStore::ApplyProxyMode() {
   if (command_line()->HasSwitch(switches::kNoProxyServer)) {
-    SetValue(proxy_config::prefs::kProxy, ProxyConfigDictionary::CreateDirect(),
+    SetValue(proxy_config::prefs::kProxy,
+             base::Value(ProxyConfigDictionary::CreateDirect()),
              WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
   } else if (command_line()->HasSwitch(switches::kProxyPacUrl)) {
     std::string pac_script_url =
         command_line()->GetSwitchValueASCII(switches::kProxyPacUrl);
     SetValue(proxy_config::prefs::kProxy,
-             ProxyConfigDictionary::CreatePacScript(pac_script_url, false),
+             base::Value(
+                 ProxyConfigDictionary::CreatePacScript(pac_script_url, false)),
              WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
   } else if (command_line()->HasSwitch(switches::kProxyAutoDetect)) {
     SetValue(proxy_config::prefs::kProxy,
-             ProxyConfigDictionary::CreateAutoDetect(),
+             base::Value(ProxyConfigDictionary::CreateAutoDetect()),
              WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
   } else if (command_line()->HasSwitch(switches::kProxyServer)) {
     std::string proxy_server =
         command_line()->GetSwitchValueASCII(switches::kProxyServer);
     std::string bypass_list =
         command_line()->GetSwitchValueASCII(switches::kProxyBypassList);
-    SetValue(
-        proxy_config::prefs::kProxy,
-        ProxyConfigDictionary::CreateFixedServers(proxy_server, bypass_list),
-        WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
+    SetValue(proxy_config::prefs::kProxy,
+             base::Value(ProxyConfigDictionary::CreateFixedServers(
+                 proxy_server, bypass_list)),
+             WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
   }
 }
 
diff --git a/chrome/browser/prefs/chrome_command_line_pref_store_unittest.cc b/chrome/browser/prefs/chrome_command_line_pref_store_unittest.cc
index d3e9661..7dbbaf3a 100644
--- a/chrome/browser/prefs/chrome_command_line_pref_store_unittest.cc
+++ b/chrome/browser/prefs/chrome_command_line_pref_store_unittest.cc
@@ -41,7 +41,7 @@
     const base::Value* value = nullptr;
     ASSERT_TRUE(GetValue(proxy_config::prefs::kProxy, &value));
     ASSERT_TRUE(value->is_dict());
-    ProxyConfigDictionary dict(value->Clone());
+    ProxyConfigDictionary dict(value->GetDict().Clone());
     ProxyPrefs::ProxyMode actual_mode;
     ASSERT_TRUE(dict.GetMode(&actual_mode));
     EXPECT_EQ(expected_mode, actual_mode);
@@ -119,7 +119,7 @@
   const base::Value* value = nullptr;
   ASSERT_TRUE(store->GetValue(proxy_config::prefs::kProxy, &value));
   ASSERT_TRUE(value->is_dict());
-  ProxyConfigDictionary dict(value->Clone());
+  ProxyConfigDictionary dict(value->GetDict().Clone());
 
   std::string string_result;
 
diff --git a/chrome/browser/prefs/proxy_policy_unittest.cc b/chrome/browser/prefs/proxy_policy_unittest.cc
index 32e5a41..5791336 100644
--- a/chrome/browser/prefs/proxy_policy_unittest.cc
+++ b/chrome/browser/prefs/proxy_policy_unittest.cc
@@ -152,7 +152,7 @@
   // there is no policy in effect.
   std::unique_ptr<PrefService> prefs(CreatePrefService(false));
   ProxyConfigDictionary dict(
-      base::Value(prefs->GetDict(proxy_config::prefs::kProxy).Clone()));
+      prefs->GetDict(proxy_config::prefs::kProxy).Clone());
   assertProxyMode(dict, ProxyPrefs::MODE_FIXED_SERVERS);
   assertProxyServer(dict, "789");
   assertPacUrl(dict, std::string());
@@ -163,7 +163,7 @@
   // line and replaced them with the policy versions.
   prefs = CreatePrefService(true);
   ProxyConfigDictionary dict2(
-      base::Value(prefs->GetDict(proxy_config::prefs::kProxy).Clone()));
+      prefs->GetDict(proxy_config::prefs::kProxy).Clone());
   assertProxyMode(dict2, ProxyPrefs::MODE_FIXED_SERVERS);
   assertProxyServer(dict2, "ghi");
   assertPacUrl(dict2, std::string());
@@ -183,7 +183,7 @@
   // there is no policy in effect.
   std::unique_ptr<PrefService> prefs = CreatePrefService(false);
   ProxyConfigDictionary dict(
-      base::Value(prefs->GetDict(proxy_config::prefs::kProxy).Clone()));
+      prefs->GetDict(proxy_config::prefs::kProxy).Clone());
   assertProxyMode(dict, ProxyPrefs::MODE_FIXED_SERVERS);
   assertProxyServer(dict, "789");
   assertPacUrl(dict, std::string());
@@ -195,7 +195,7 @@
   // set in policy.
   prefs = CreatePrefService(true);
   ProxyConfigDictionary dict2(
-      base::Value(prefs->GetDict(proxy_config::prefs::kProxy).Clone()));
+      prefs->GetDict(proxy_config::prefs::kProxy).Clone());
   assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_AUTO_DETECT);
 }
 
@@ -211,7 +211,7 @@
   // there is no policy in effect.
   std::unique_ptr<PrefService> prefs = CreatePrefService(false);
   ProxyConfigDictionary dict(
-      base::Value(prefs->GetDict(proxy_config::prefs::kProxy).Clone()));
+      prefs->GetDict(proxy_config::prefs::kProxy).Clone());
   assertProxyModeWithoutParams(dict, ProxyPrefs::MODE_DIRECT);
 
   // Try a second time time with the managed PrefStore in place, the
@@ -219,7 +219,7 @@
   // in place with the appropriate default value for this to work.
   prefs = CreatePrefService(true);
   ProxyConfigDictionary dict2(
-      base::Value(prefs->GetDict(proxy_config::prefs::kProxy).Clone()));
+      prefs->GetDict(proxy_config::prefs::kProxy).Clone());
   assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_AUTO_DETECT);
 }
 
@@ -235,7 +235,7 @@
   // PrefStore.
   std::unique_ptr<PrefService> prefs = CreatePrefService(false);
   ProxyConfigDictionary dict(
-      base::Value(prefs->GetDict(proxy_config::prefs::kProxy).Clone()));
+      prefs->GetDict(proxy_config::prefs::kProxy).Clone());
   assertProxyModeWithoutParams(dict, ProxyPrefs::MODE_AUTO_DETECT);
 
   // Try a second time time with the managed PrefStore in place, the
@@ -243,7 +243,7 @@
   // in place with the appropriate default value for this to work.
   prefs = CreatePrefService(true);
   ProxyConfigDictionary dict2(
-      base::Value(prefs->GetDict(proxy_config::prefs::kProxy).Clone()));
+      prefs->GetDict(proxy_config::prefs::kProxy).Clone());
   assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_DIRECT);
 }
 
diff --git a/chrome/browser/printing/pdf_to_emf_converter.cc b/chrome/browser/printing/pdf_to_emf_converter.cc
index fda0e0a..2450219 100644
--- a/chrome/browser/printing/pdf_to_emf_converter.cc
+++ b/chrome/browser/printing/pdf_to_emf_converter.cc
@@ -26,6 +26,7 @@
 #include "chrome/browser/printing/printing_service.h"
 #include "chrome/services/printing/public/mojom/pdf_to_emf_converter.mojom.h"
 #include "chrome/services/printing/public/mojom/printing_service.mojom.h"
+#include "components/device_event_log/device_event_log.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/child_process_data.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
@@ -134,7 +135,7 @@
 
   void RecordConversionMetrics();
 
-  PdfRenderSettings settings_;
+  const PdfRenderSettings settings_;
 
   // Document loaded callback.
   PdfConverter::StartCallback start_callback_;
@@ -225,6 +226,7 @@
     return;
   }
 
+  PRINTER_LOG(EVENT) << "PdfConverter created. Mode: " << settings_.mode;
   memcpy(memory.mapping.memory(), data->front(), data->size());
 
   GetPrintingService()->BindPdfToEmfConverterFactory(
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index 5816e2a..9172ab3b 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -28,6 +28,7 @@
 #include "base/metrics/user_metrics.h"
 #include "base/no_destructor.h"
 #include "base/observer_list.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
@@ -2413,8 +2414,7 @@
   DCHECK(profile);
   if (!profile->IsOffTheRecord() && !browser->is_type_app() &&
       --browser_counts_[profile] == 0) {
-    active_profiles_.erase(
-        std::find(active_profiles_.begin(), active_profiles_.end(), profile));
+    active_profiles_.erase(base::ranges::find(active_profiles_, profile));
     if (!closing_all_browsers_)
       SaveActiveProfiles();
   }
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 1097386..fff29c87 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
@@ -527,6 +527,17 @@
     return browser_.get();
   }
 
+  Browser* GetPwaBrowser() {
+    if (!browser_) {
+      Browser::CreateParams create_params(Browser::Type::TYPE_APP, profile(),
+                                          true);
+      auto test_window = std::make_unique<TestBrowserWindow>();
+      create_params.window = test_window.get();
+      browser_.reset(Browser::Create(create_params));
+    }
+    return browser_.get();
+  }
+
  private:
   std::unique_ptr<custom_handlers::ProtocolHandlerRegistry> registry_;
   std::unique_ptr<ScopedTestingLocalState> testing_local_state_;
@@ -1047,6 +1058,93 @@
                                  IDC_CONTENT_CONTEXT_AUTOFILL_CUSTOM_LAST));
 }
 
+// Verify that the Lens Image Search menu item is disabled on non-image content
+TEST_F(RenderViewContextMenuPrefsTest, LensImageSearchNonImage) {
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeature(lens::features::kLensStandalone);
+  SetUserSelectedDefaultSearchProvider("https://www.google.com",
+                                       /*supports_image_search=*/true);
+  content::ContextMenuParams params = CreateParams(MenuItem::PAGE);
+  TestRenderViewContextMenu menu(*web_contents()->GetPrimaryMainFrame(),
+                                 params);
+  menu.SetBrowser(GetBrowser());
+  menu.Init();
+
+  EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE));
+  EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHLENSFORIMAGE));
+}
+
+// Verify that the Lens Image Search menu item is enabled on image content
+TEST_F(RenderViewContextMenuPrefsTest, LensImageSearchEnabled) {
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeature(lens::features::kLensStandalone);
+  SetUserSelectedDefaultSearchProvider("https://www.google.com",
+                                       /*supports_image_search=*/true);
+  content::ContextMenuParams params = CreateParams(MenuItem::IMAGE);
+  params.has_image_contents = true;
+  TestRenderViewContextMenu menu(*web_contents()->GetPrimaryMainFrame(),
+                                 params);
+  menu.SetBrowser(GetBrowser());
+  menu.Init();
+
+  EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE));
+  EXPECT_TRUE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHLENSFORIMAGE));
+}
+
+// Verify that the Lens Image Search menu item is enabled for Progressive Web
+// Apps
+TEST_F(RenderViewContextMenuPrefsTest, LensImageSearchForProgressiveWebApp) {
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeature(lens::features::kLensStandalone);
+  SetUserSelectedDefaultSearchProvider("https://www.google.com",
+                                       /*supports_image_search=*/true);
+  content::ContextMenuParams params = CreateParams(MenuItem::IMAGE);
+  params.has_image_contents = true;
+  TestRenderViewContextMenu menu(*web_contents()->GetPrimaryMainFrame(),
+                                 params);
+  menu.SetBrowser(GetPwaBrowser());
+  menu.Init();
+
+  EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE));
+  EXPECT_TRUE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHLENSFORIMAGE));
+}
+
+// Verify that the Lens Image Search menu item is enabled for third-party
+// default search engines that support image search.
+TEST_F(RenderViewContextMenuPrefsTest, LensImageSearchEnabledFor3pDse) {
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeature(lens::features::kLensStandalone);
+  SetUserSelectedDefaultSearchProvider("https://www.bing.com",
+                                       /*supports_image_search=*/true);
+  content::ContextMenuParams params = CreateParams(MenuItem::IMAGE);
+  params.has_image_contents = true;
+  TestRenderViewContextMenu menu(*web_contents()->GetPrimaryMainFrame(),
+                                 params);
+  menu.SetBrowser(GetBrowser());
+  menu.Init();
+
+  EXPECT_TRUE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE));
+  EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHLENSFORIMAGE));
+}
+
+// Verify that the Lens Image Search menu item is disabled for third-part
+// default search engines that do not support image search.
+TEST_F(RenderViewContextMenuPrefsTest, LensImageSearchDisabledFor3pDse) {
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeature(lens::features::kLensStandalone);
+  SetUserSelectedDefaultSearchProvider("https://www.yahoo.com",
+                                       /*supports_image_search=*/false);
+  content::ContextMenuParams params = CreateParams(MenuItem::IMAGE);
+  params.has_image_contents = true;
+  TestRenderViewContextMenu menu(*web_contents()->GetPrimaryMainFrame(),
+                                 params);
+  menu.SetBrowser(GetBrowser());
+  menu.Init();
+
+  EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE));
+  EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_SEARCHLENSFORIMAGE));
+}
+
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
 // Verify that the Lens Region Search menu item is displayed when the feature
 // is enabled.
@@ -1234,6 +1332,22 @@
   EXPECT_FALSE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_LENS_REGION_SEARCH));
 }
 
+// Verify that the Lens Region Search menu item is enabled for Progressive Web
+// Apps
+TEST_F(RenderViewContextMenuPrefsTest, LensRegionSearchProgressiveWebApp) {
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeature(lens::features::kLensStandalone);
+  SetUserSelectedDefaultSearchProvider("https://www.google.com",
+                                       /*supports_image_search=*/true);
+  content::ContextMenuParams params = CreateParams(MenuItem::PAGE);
+  TestRenderViewContextMenu menu(*web_contents()->GetPrimaryMainFrame(),
+                                 params);
+  menu.SetBrowser(GetPwaBrowser());
+  menu.Init();
+
+  EXPECT_TRUE(menu.IsItemPresent(IDC_CONTENT_CONTEXT_LENS_REGION_SEARCH));
+}
+
 #endif
 
 // Test FormatUrlForClipboard behavior
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn
index a1ec5de..19d04538 100644
--- a/chrome/browser/resources/BUILD.gn
+++ b/chrome/browser/resources/BUILD.gn
@@ -129,7 +129,6 @@
       deps += [
         "gaia_auth_host:closure_compile",
         "image_editor:closure_compile",
-        "inline_login:closure_compile",
       ]
     }
     if (is_chromeos_ash) {
diff --git a/chrome/browser/resources/chromeos/arc_account_picker/arc_account_picker_app.d.ts b/chrome/browser/resources/chromeos/arc_account_picker/arc_account_picker_app.d.ts
new file mode 100644
index 0000000..c80deac
--- /dev/null
+++ b/chrome/browser/resources/chromeos/arc_account_picker/arc_account_picker_app.d.ts
@@ -0,0 +1,13 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+export interface ArcAccountPickerAppElement extends HTMLElement {
+  loadAccounts(): Promise<boolean>;
+}
+
+declare global {
+  interface HTMLElementTagNameMap {
+    'arc-account-picker-app': ArcAccountPickerAppElement;
+  }
+}
diff --git a/chrome/browser/resources/chromeos/arc_account_picker/arc_util.d.ts b/chrome/browser/resources/chromeos/arc_account_picker/arc_util.d.ts
new file mode 100644
index 0000000..d53241f
--- /dev/null
+++ b/chrome/browser/resources/chromeos/arc_account_picker/arc_util.d.ts
@@ -0,0 +1,11 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+interface AccountAdditionOptions {
+  isAvailableInArc: boolean;
+  showArcAvailabilityPicker: boolean;
+}
+
+export function getAccountAdditionOptionsFromJSON(json: string|null):
+    AccountAdditionOptions|null;
diff --git a/chrome/browser/resources/gaia_auth_host/authenticator.d.ts b/chrome/browser/resources/gaia_auth_host/authenticator.d.ts
new file mode 100644
index 0000000..995cb48
--- /dev/null
+++ b/chrome/browser/resources/gaia_auth_host/authenticator.d.ts
@@ -0,0 +1,86 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @fileoverview Minimal TypeScript definitions to satisfy cases where
+ * authenticator.js is used from TypeScript files.
+ */
+
+import {PasswordAttributes} from './saml_password_attributes.js';
+
+export interface SyncTrustedVaultKey {
+  keyMaterial: ArrayBuffer;
+  version: number;
+}
+
+export interface SyncTrustedRecoveryMethod {
+  publicKey: ArrayBuffer;
+  type: number;
+}
+
+export interface SyncTrustedVaultKeys {
+  obfuscatedGaiaId: string;
+  encryptionKeys: SyncTrustedVaultKey[];
+  trustedRecoveryMethods: SyncTrustedRecoveryMethod[];
+}
+
+export interface AuthCompletedCredentials {
+  chooseWhatToSync: boolean;
+  email: string;
+  gaiaId: string;
+  passwordAttributes: PasswordAttributes;
+  password: string;
+  publicSAML: boolean;
+  services: any[];
+  sessionIndex: string;
+  skipForNow: boolean;
+  syncTrustedVaultKeys: SyncTrustedVaultKeys;
+  trusted: boolean;
+  usingSAML: boolean;
+  isAvailableInArc?: boolean;
+}
+
+export interface AuthParams {
+  authMode: AuthMode;
+  clientId: string;
+  constrained: string;
+  dontResizeNonEmbeddedPages: boolean;
+  emailDomain: string;
+  email: string;
+  enableGaiaActionButtons: boolean;
+  enterpriseEnrollmentDomain: string;
+  extractSamlPasswordAttributes: boolean;
+  flow: string;
+  gaiaPath: string;
+  gaiaUrl: string;
+  hl: string;
+  ignoreCrOSIdpSetting: boolean;
+  isDeviceOwner: boolean;
+  isLoginPrimaryAccount: boolean;
+  isSupervisedUser: boolean;
+  platformVersion: string;
+  readOnlyEmail: boolean;
+  samlAclUrl: string;
+  service: string;
+  showTos: string;
+  ssoProfile: string;
+  urlParameterToAutofillSAMLUsername: string;
+}
+
+export enum AuthMode {
+  DEFAULT = 0,
+  OFFLINE = 1,
+  DESKTOP = 2,
+}
+
+export enum AuthFlow {
+  DEFAULT = 0,
+  SAML = 0,
+}
+
+export class Authenticator extends EventTarget {
+  constructor(webview: HTMLElement|string);
+  getAccountsResponse(accounts: string[]): void;
+  load(authMode: AuthMode, data: AuthParams): void;
+}
diff --git a/chrome/browser/resources/gaia_auth_host/saml_password_attributes.d.ts b/chrome/browser/resources/gaia_auth_host/saml_password_attributes.d.ts
new file mode 100644
index 0000000..fdcd8da
--- /dev/null
+++ b/chrome/browser/resources/gaia_auth_host/saml_password_attributes.d.ts
@@ -0,0 +1,9 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+export class PasswordAttributes {
+  modifiedTime: string;
+  expirationTime: string;
+  passwordChangeUrl: string;
+}
diff --git a/chrome/browser/resources/inline_login/BUILD.gn b/chrome/browser/resources/inline_login/BUILD.gn
index 7033c60d..2db4aa7 100644
--- a/chrome/browser/resources/inline_login/BUILD.gn
+++ b/chrome/browser/resources/inline_login/BUILD.gn
@@ -3,183 +3,42 @@
 # found in the LICENSE file.
 
 import("//chrome/browser/buildflags.gni")
+import("//chrome/browser/resources/tools/build_webui.gni")
 import("//chrome/common/features.gni")
-import("//third_party/closure_compiler/compile_js.gni")
-import("//tools/grit/grit_rule.gni")
-import("//tools/grit/preprocess_if_expr.gni")
-import("//tools/polymer/html_to_wrapper.gni")
-import("//ui/webui/resources/tools/generate_grd.gni")
 
 assert(!is_android)
 
-preprocess_folder = "preprocessed"
-preprocess_manifest = "${target_gen_dir}/preprocessed_manifest.json"
-preprocess_gen_manifest = "${target_gen_dir}/preprocessed_gen_manifest.json"
-
-non_web_component_files = [ "inline_login_browser_proxy.js" ]
-
-web_component_files = [ "inline_login_app.js" ]
-
-if (is_chromeos_ash) {
-  web_component_files += [
-    "signin_blocked_by_policy_page.js",
-    "signin_error_page.js",
-    "welcome_page_app.js",
-  ]
-}
-
-# Files that are passed as input to html_to_wrapper().
-html_files = []
-foreach(f, web_component_files) {
-  html_files += [ string_replace(f, ".js", ".html") ]
-}
-
-# Files that are generated by html_to_wrapper().
-html_wrapper_files = []
-foreach(f, html_files) {
-  html_wrapper_files += [ f + ".js" ]
-}
-
-group("components") {
-  deps = [
-    ":html_wrapper_files",
-    ":preprocess",
-    ":preprocess_generated",
-  ]
-}
-
-preprocess_if_expr("preprocess") {
-  out_folder = "$target_gen_dir/$preprocess_folder"
-  out_manifest = preprocess_manifest
-  in_files = non_web_component_files + web_component_files
-}
-
-preprocess_if_expr("preprocess_generated") {
-  deps = [ ":html_wrapper_files" ]
-  in_folder = target_gen_dir
-  out_folder = "$target_gen_dir/$preprocess_folder"
-  out_manifest = preprocess_gen_manifest
-  in_files = html_wrapper_files
-}
-
-generate_grd("build_grd") {
+build_webui("build") {
   grd_prefix = "inline_login"
-  out_grd = "$target_gen_dir/resources.grd"
-  deps = [
-    ":preprocess",
-    ":preprocess_generated",
-  ]
-  manifest_files = [
-    preprocess_manifest,
-    preprocess_gen_manifest,
-  ]
-  input_files = [ "inline_login.html" ]
-  input_files_base_dir = rebase_path(".", "//")
-}
+  static_files = [ "inline_login.html" ]
 
-grit("resources") {
-  defines = chrome_grit_defines
+  web_component_files = [ "inline_login_app.ts" ]
 
-  enable_input_discovery_for_gn_analyze = false
-  source = "$target_gen_dir/resources.grd"
-  deps = [ ":build_grd" ]
-
-  outputs = [
-    "grit/inline_login_resources.h",
-    "grit/inline_login_resources_map.cc",
-    "grit/inline_login_resources_map.h",
-    "inline_login_resources.pak",
-  ]
-  output_dir = "$root_gen_dir/chrome"
-}
-
-js_type_check("closure_compile") {
-  is_polymer3 = true
-  closure_flags = default_closure_args + [
-                    "js_module_root=" +
-                        rebase_path("//chrome/browser/resources/inline_login/",
-                                    root_build_dir),
-                    "js_module_root=./gen/chrome/browser/resources/inline_login/",
-                    "js_module_root=./gen/chrome/browser/resources/inline_login/preprocessed/",
-                    "js_module_root=" +
-                        rebase_path("//chrome/browser/resources/",
-                                    root_build_dir),
-                    "js_module_root=./gen/chrome/browser/resources/",
-                  ]
-  deps = [
-    ":inline_login_app",
-    ":inline_login_browser_proxy",
-  ]
   if (is_chromeos_ash) {
-    deps += [
-      ":signin_blocked_by_policy_page",
-      ":signin_error_page",
-      ":welcome_page_app",
+    web_component_files += [
+      "signin_blocked_by_policy_page.ts",
+      "signin_error_page.ts",
+      "welcome_page_app.ts",
     ]
   }
-}
 
-js_library("inline_login_app") {
-  sources = [ "$target_gen_dir/$preprocess_folder/inline_login_app.js" ]
-  deps = [
-    ":inline_login_browser_proxy",
-    "//chrome/browser/resources/gaia_auth_host:authenticator",
-    "//third_party/polymer/v3_0/components-chromium/paper-spinner:paper-spinner-lite",
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_elements:i18n_behavior",
-    "//ui/webui/resources/cr_elements:web_ui_listener_behavior",
-    "//ui/webui/resources/js:assert",
-    "//ui/webui/resources/js:load_time_data.m",
+  non_web_component_files = [ "inline_login_browser_proxy.ts" ]
+
+  ts_definitions = [ "//tools/typescript/definitions/chrome_send.d.ts" ]
+  ts_deps = [
+    "//third_party/polymer/v3_0:library",
+    "//ui/webui/resources:library",
   ]
+
+  ts_path_mappings =
+      [ "chrome://chrome-signin/gaia_auth_host/*|" +
+        rebase_path("//chrome/browser/resources/gaia_auth_host/*",
+                    target_gen_dir) ]
   if (is_chromeos_ash) {
-    deps += [
-      ":signin_blocked_by_policy_page",
-      ":signin_error_page",
-      ":welcome_page_app",
-      "//chrome/browser/resources/chromeos/arc_account_picker:arc_account_picker_app",
-      "//chrome/browser/resources/chromeos/arc_account_picker:arc_util",
-    ]
+    ts_path_mappings +=
+        [ "chrome://chrome-signin/arc_account_picker/*|" +
+          rebase_path(
+              "//chrome/browser/resources/chromeos/arc_account_picker/*",
+              target_gen_dir) ]
   }
-  externs_list = [
-    "$externs_path/webview_tag.js",
-    "//ui/webui/resources/cr_elements/cr_view_manager/cr_view_manager_externs.js",
-  ]
-  extra_deps = [ ":preprocess" ]
-}
-
-js_library("welcome_page_app") {
-  deps = [
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_elements:i18n_behavior",
-    "//ui/webui/resources/js:load_time_data.m",
-  ]
-}
-
-js_library("signin_blocked_by_policy_page") {
-  deps = [
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/js:load_time_data.m",
-  ]
-}
-
-js_library("signin_error_page") {
-  deps = [
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-  ]
-}
-
-js_library("inline_login_browser_proxy") {
-  sources =
-      [ "$target_gen_dir/$preprocess_folder/inline_login_browser_proxy.js" ]
-  deps = [
-    "//chrome/browser/resources/gaia_auth_host:authenticator",
-    "//ui/webui/resources/js:cr.m",
-  ]
-  externs_list = [ "$externs_path/chrome_send.js" ]
-  extra_deps = [ ":preprocess" ]
-}
-
-html_to_wrapper("html_wrapper_files") {
-  use_js = true
-  in_files = html_files
 }
diff --git a/chrome/browser/resources/inline_login/inline_login_app.html b/chrome/browser/resources/inline_login/inline_login_app.html
index 6477876..8fd1098 100644
--- a/chrome/browser/resources/inline_login/inline_login_app.html
+++ b/chrome/browser/resources/inline_login/inline_login_app.html
@@ -128,7 +128,7 @@
 
     <cr-button class="next-button action-button"
         aria-label="[[getNextButtonLabel_(currentView_, isArcAccountRestrictionsEnabled_)]]"
-        on-tap="onOkButtonClick_"
+        on-click="onOkButtonClick_"
         hidden$="[[!shouldShowOkButton_(currentView_)]]">
       [[getNextButtonLabel_(currentView_, isArcAccountRestrictionsEnabled_)]]
     </cr-button>
diff --git a/chrome/browser/resources/inline_login/inline_login_app.js b/chrome/browser/resources/inline_login/inline_login_app.ts
similarity index 63%
rename from chrome/browser/resources/inline_login/inline_login_app.js
rename to chrome/browser/resources/inline_login/inline_login_app.ts
index 1bb347c..070b44fc 100644
--- a/chrome/browser/resources/inline_login/inline_login_app.js
+++ b/chrome/browser/resources/inline_login/inline_login_app.ts
@@ -8,24 +8,28 @@
 import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
 import 'chrome://resources/cr_elements/cr_view_manager/cr_view_manager.js';
 
-import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
-import {isRTL} from 'chrome://resources/js/util.js';
-import {WebUIListenerBehavior, WebUIListenerBehaviorInterface} from 'chrome://resources/cr_elements/web_ui_listener_behavior.js';
-import {mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
 // <if expr="chromeos_ash">
-import './arc_account_picker/arc_account_picker_app.js';
+import 'chrome://chrome-signin/arc_account_picker/arc_account_picker_app.js';
 import './gaia_action_buttons/gaia_action_buttons.js';
 import './signin_blocked_by_policy_page.js';
 import './signin_error_page.js';
 import './welcome_page_app.js';
 import './strings.m.js';
-import {getAccountAdditionOptionsFromJSON} from './arc_account_picker/arc_util.js';
-import {WelcomePageAppElement} from './welcome_page_app.js';
 // </if>
 
-import {AuthCompletedCredentials, Authenticator, AuthParams} from './gaia_auth_host/authenticator.js';
+import {CrViewManagerElement} from 'chrome://resources/cr_elements/cr_view_manager/cr_view_manager.js';
+import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js';
+import {WebUIListenerMixin} from 'chrome://resources/cr_elements/web_ui_listener_mixin.js';
+import {isRTL} from 'chrome://resources/js/util.js';
+import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {assert} from 'chrome://resources/js/assert_ts.js';
+
+// <if expr="chromeos_ash">
+import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {getAccountAdditionOptionsFromJSON} from 'chrome://chrome-signin/arc_account_picker/arc_util.js';
+// </if>
+
+import {AuthCompletedCredentials, Authenticator, AuthParams} from 'chrome://chrome-signin/gaia_auth_host/authenticator.js';
 import {getTemplate} from './inline_login_app.html.js';
 import {InlineLoginBrowserProxy, InlineLoginBrowserProxyImpl} from './inline_login_browser_proxy.js';
 
@@ -34,26 +38,46 @@
  * Chrome desktop (Windows only).
  */
 
-/** @enum {string} */
-export const View = {
-  ADD_ACCOUNT: 'addAccount',
-  SIGNIN_BLOCKED_BY_POLICY: 'signinBlockedByPolicy',
-  SIGNIN_ERROR: 'signinError',
-  WELCOME: 'welcome',
-  ARC_ACCOUNT_PICKER: 'arcAccountPicker',
-};
+export enum View {
+  ADD_ACCOUNT = 'addAccount',
+  // <if expr="chromeos_ash">
+  ARC_ACCOUNT_PICKER = 'arcAccountPicker',
+  SIGNIN_BLOCKED_BY_POLICY = 'signinBlockedByPolicy',
+  SIGNIN_ERROR = 'signinError',
+  WELCOME = 'welcome',
+  // </if>
+}
 
+interface NewWindowProperties {
+  targetUrl: string;
+  window: {
+    discard(): void,
+  };
+}
 
-/**
- * @constructor
- * @extends {PolymerElement}
- * @implements {WebUIListenerBehaviorInterface}
- * @implements {I18nBehaviorInterface}
- */
-const InlineLoginAppElementBase =
-    mixinBehaviors([WebUIListenerBehavior, I18nBehavior], PolymerElement);
+interface WebViewElement extends HTMLElement {
+  canGoBack(): boolean;
+  back(): void;
+}
 
-/** @polymer */
+// <if expr="chromeos_ash">
+interface SigninErrorPageData {
+  email: string;
+  hostedDomain: string;
+  signinBlockedByPolicy: boolean;
+  deviceType: string;
+}
+// </if>
+
+export interface InlineLoginAppElement {
+  $: {
+    signinFrame: WebViewElement,
+    viewManager: CrViewManagerElement,
+  };
+}
+
+const InlineLoginAppElementBase = WebUIListenerMixin(I18nMixin(PolymerElement));
+
 export class InlineLoginAppElement extends InlineLoginAppElementBase {
   static get is() {
     return 'inline-login-app';
@@ -73,7 +97,6 @@
 
       /**
        * Indicates whether the page is loading.
-       * @private {boolean}
        */
       loading_: {
         type: Boolean,
@@ -82,7 +105,6 @@
 
       /**
        * Indicates whether the account is being verified.
-       * @private {boolean}
        */
       verifyingAccount_: {
         type: Boolean,
@@ -91,7 +113,6 @@
 
       /**
        * The auth extension host instance.
-       * @private {?Authenticator}
        */
       authExtHost_: {
         type: Object,
@@ -101,7 +122,6 @@
       // <if expr="chromeos_ash">
       /*
        * True if welcome page should not be shown.
-       * @private
        */
       shouldSkipWelcomePage_: {
         type: Boolean,
@@ -113,7 +133,6 @@
 
       /*
        * True if `kArcAccountRestrictions` feature is enabled.
-       * @private
        */
       isArcAccountRestrictionsEnabled_: {
         type: Boolean,
@@ -125,7 +144,6 @@
 
       /*
        * True if the dialog is open for reauthentication.
-       * @private
        */
       isReauthentication_: {
         type: Boolean,
@@ -134,7 +152,6 @@
 
       /*
        * True if the account should be available in ARC++ after addition.
-       * @private
        */
       isAvailableInArc_: {
         type: Boolean,
@@ -143,20 +160,16 @@
 
       /**
        * User's email used in the sign-in flow.
-       * @private {string}
        */
       email_: {type: String, value: ''},
 
       /**
        * Hosted domain of the user's email used in the sign-in flow.
-       * @private {string}
        */
       hostedDomain_: {type: String, value: ''},
 
       /**
-       * @return {boolean} True if secondary account sign-ins are allowed, false
-       *    otherwise.
-       * @private
+       * Whether secondary account sign-ins are allowed.
        */
       isSecondaryGoogleAccountSigninAllowed_: {
         type: Boolean,
@@ -168,7 +181,6 @@
 
       /**
        * Id of the screen that is currently displayed.
-       * @private {View}
        */
       currentView_: {
         type: String,
@@ -177,23 +189,29 @@
     };
   }
 
-  /** @override */
-  constructor() {
-    super();
+  private loading_: boolean;
+  private verifyingAccount_: boolean;
+  private authExtHost_: Authenticator|null;
 
-    /**
-     * Whether the login UI is loaded for signing in primary account.
-     * @private {boolean}
-     */
-    this.isLoginPrimaryAccount_ = false;
+  // <if expr="chromeos_ash">
+  private shouldSkipWelcomePage_: boolean;
+  private isArcAccountRestrictionsEnabled_: boolean;
+  private isReauthentication_: boolean;
+  private isAvailableInArc_: boolean;
+  private email_: string;
+  private hostedDomain_: string;
+  private isSecondaryGoogleAccountSigninAllowed_: boolean;
+  // </if>
 
+  private currentView_: View;
 
-    /** @private {InlineLoginBrowserProxy} */
-    this.browserProxy_ = InlineLoginBrowserProxyImpl.getInstance();
-  }
+  /** Whether the login UI is loaded for signing in primary account. */
+  private isLoginPrimaryAccount_: boolean = false;
 
-  /** @override */
-  ready() {
+  private browserProxy_: InlineLoginBrowserProxy =
+      InlineLoginBrowserProxyImpl.getInstance();
+
+  override ready() {
     super.ready();
 
     // <if expr="chromeos_ash">
@@ -207,66 +225,53 @@
     }
     // </if>
 
-    this.authExtHost_ = new Authenticator(
-        /** @type {!WebView} */ (this.$.signinFrame));
+    this.authExtHost_ = new Authenticator(this.$.signinFrame);
     this.addAuthExtHostListeners_();
     this.browserProxy_.initialize();
   }
 
-  /** @override */
-  connectedCallback() {
+  override connectedCallback() {
     super.connectedCallback();
 
     this.addWebUIListener(
-        'load-auth-extension', data => this.loadAuthExtension_(data));
+        'load-auth-extension',
+        (data: AuthParams) => this.loadAuthExtension_(data));
     this.addWebUIListener(
-        'send-lst-fetch-results', arg => this.sendLSTFetchResults_(arg));
+        'send-lst-fetch-results',
+        (arg: string) => this.sendLSTFetchResults_(arg));
     this.addWebUIListener('close-dialog', () => this.closeDialog_());
     // <if expr="chromeos_ash">
     this.addWebUIListener(
-        'show-signin-error-page', data => this.signinErrorShowView_(data));
+        'show-signin-error-page',
+        (data: SigninErrorPageData) => this.signinErrorShowView_(data));
     // </if>
   }
 
-  /** @private */
-  addAuthExtHostListeners_() {
+  private addAuthExtHostListeners_() {
+    assert(this.authExtHost_);
     this.authExtHost_.addEventListener(
-        'dropLink',
-        e => this.onDropLink_(
-            /** @type {!CustomEvent<string>} */ (e)));
+        'dropLink', e => this.onDropLink_(e as CustomEvent<string>));
     this.authExtHost_.addEventListener(
         'newWindow',
-        e => this.onNewWindow_(
-            /** @type {!CustomEvent<NewWindowProperties>} */ (e)));
+        e => this.onNewWindow_(e as CustomEvent<NewWindowProperties>));
     this.authExtHost_.addEventListener('ready', () => this.onAuthReady_());
     this.authExtHost_.addEventListener(
-        'resize',
-        e => this.onResize_(
-            /** @type {!CustomEvent<string>} */ (e)));
+        'resize', e => this.onResize_(e as CustomEvent<string>));
     this.authExtHost_.addEventListener(
         'authCompleted',
-        e => this.onAuthCompleted_(
-            /** @type {!CustomEvent<!AuthCompletedCredentials>} */ (e)));
+        e => this.onAuthCompleted_(e as CustomEvent<AuthCompletedCredentials>));
     this.authExtHost_.addEventListener(
         'showIncognito', () => this.onShowIncognito_());
     this.authExtHost_.addEventListener(
         'getAccounts', () => this.onGetAccounts_());
   }
 
-  /**
-   * @param {!CustomEvent<string>} e
-   * @private
-   */
-  onDropLink_(e) {
+  private onDropLink_(e: CustomEvent<string>) {
     // Navigate to the dropped link.
     window.location.href = e.detail;
   }
 
-  /**
-   * @param {!CustomEvent<NewWindowProperties>} e
-   * @private
-   */
-  onNewWindow_(e) {
+  private onNewWindow_(e: CustomEvent<NewWindowProperties>) {
     window.open(e.detail.targetUrl, '_blank');
     e.detail.window.discard();
     // <if expr="chromeos_ash">
@@ -276,8 +281,7 @@
     // </if>
   }
 
-  /** @private */
-  onAuthReady_() {
+  private onAuthReady_() {
     this.loading_ = false;
     if (this.isLoginPrimaryAccount_) {
       this.browserProxy_.recordAction('Signin_SigninPage_Shown');
@@ -285,21 +289,12 @@
     this.browserProxy_.authExtensionReady();
   }
 
-  /**
-   * @param {!CustomEvent<string>} e
-   * @private
-   */
-  onResize_(e) {
+  private onResize_(e: CustomEvent<string>) {
     this.browserProxy_.switchToFullTab(e.detail);
   }
 
-  /**
-   * @param {!CustomEvent<!AuthCompletedCredentials>} e
-   * @private
-   */
-  onAuthCompleted_(e) {
+  private onAuthCompleted_(e: CustomEvent<AuthCompletedCredentials>) {
     this.verifyingAccount_ = true;
-    /** @type {!AuthCompletedCredentials} */
     const credentials = e.detail;
 
     // <if expr="chromeos_ash">
@@ -311,24 +306,23 @@
     this.browserProxy_.completeLogin(credentials);
   }
 
-  /** @private */
-  onShowIncognito_() {
+  private onShowIncognito_() {
     this.browserProxy_.showIncognito();
   }
 
-  /** @private */
-  onGetAccounts_() {
+  private onGetAccounts_() {
     this.browserProxy_.getAccounts().then(result => {
+      assert(this.authExtHost_);
       this.authExtHost_.getAccountsResponse(result);
     });
   }
 
   /**
    * Loads auth extension.
-   * @param {!AuthParams} data Parameters for auth extension.
-   * @private
+   * @param data Parameters for auth extension.
    */
-  loadAuthExtension_(data) {
+  private loadAuthExtension_(data: AuthParams) {
+    assert(this.authExtHost_);
     this.authExtHost_.load(data.authMode, data);
     this.loading_ = true;
     this.isLoginPrimaryAccount_ = data.isLoginPrimaryAccount;
@@ -346,47 +340,42 @@
    * the inline signin is loaded with reason kFetchLstOnly. Handlers of
    * this message would expect a single argument a base::Dictionary value that
    * contains the values fetched from the gaia sign in endpoint.
-   * @param {string} arg The string representation of the json data returned by
+   * @param arg The string representation of the json data returned by
    *    the sign in dialog after it has finished the sign in process.
-   * @private
    */
-  sendLSTFetchResults_(arg) {
+  private sendLSTFetchResults_(arg: string) {
     this.browserProxy_.lstFetchResults(arg);
   }
 
   /**
-   * @param {boolean} loading Indicates whether the page is loading.
-   * @param {boolean} verifyingAccount Indicates whether the user account is
-   *  being verified.
-   * @return {boolean}
-   * @private
+   * @param loading Indicates whether the page is loading.
+   * @param verifyingAccount Indicates whether the user account is being
+   *     verified.
    */
-  isSpinnerActive_(loading, verifyingAccount) {
+  private isSpinnerActive_(loading: boolean, verifyingAccount: boolean):
+      boolean {
     return loading || verifyingAccount;
   }
 
   /**
    * Closes the login dialog.
-   * @private
    */
-  closeDialog_() {
+  private closeDialog_() {
     this.browserProxy_.dialogClose();
   }
 
   // <if expr="chromeos_ash">
   /**
    * Navigates to the welcome screen.
-   * @private
    */
-  goToWelcomeScreen_() {
+  private goToWelcomeScreen_() {
     this.switchView_(View.WELCOME);
   }
 
   /**
    * Navigates back in the web view if possible. Otherwise closes the dialog.
-   * @private
    */
-  handleGoBack_() {
+  private handleGoBack_() {
     if (this.$.signinFrame.canGoBack()) {
       this.$.signinFrame.back();
       this.$.signinFrame.focus();
@@ -398,19 +387,12 @@
     }
   }
 
-  /**
-   * @return {string}
-   * @private
-   */
-  getBackButtonIcon_() {
+  private getBackButtonIcon_(): string {
     return isRTL() ? 'cr:chevron-right' : 'cr:chevron-left';
   }
 
-  /**
-   * @return {string}
-   * @private
-   */
-  getNextButtonLabel_(currentView, isArcAccountRestrictionsEnabled) {
+  private getNextButtonLabel_(
+      currentView: View, isArcAccountRestrictionsEnabled: boolean): string {
     if (currentView === View.SIGNIN_BLOCKED_BY_POLICY ||
         currentView === View.SIGNIN_ERROR) {
       return this.i18n('ok');
@@ -422,55 +404,46 @@
   }
 
   /**
-   * @param {View} currentView Identifier of the view that is being shown.
-   * @param {boolean} verifyingAccount Indicates whether the user account is
-   *  being verified.
-   * @return {boolean}
-   * @private
+   * @param currentView Identifier of the view that is being shown.
+   * @param verifyingAccount Indicates whether the user account is being
+   *     verified.
    */
-  shouldShowBackButton_(currentView, verifyingAccount) {
+  private shouldShowBackButton_(currentView: View, verifyingAccount: boolean):
+      boolean {
     return currentView === View.ADD_ACCOUNT && !verifyingAccount;
   }
 
-  /**
-   * @return {boolean}
-   * @private
-   */
-  shouldShowOkButton_() {
+  private shouldShowOkButton_(): boolean {
     return this.currentView_ === View.WELCOME ||
         this.currentView_ === View.SIGNIN_BLOCKED_BY_POLICY ||
         this.currentView_ === View.SIGNIN_ERROR;
   }
 
-  /**
-   * @return {boolean}
-   * @private
-   */
-  shouldShowGaiaButtons_() {
+  private shouldShowGaiaButtons_(): boolean {
     return this.currentView_ === View.ADD_ACCOUNT;
   }
   // </if>
 
   /**
    * Navigates to the default view.
-   * @private
    */
-  switchToDefaultView_() {
+  private switchToDefaultView_() {
     const view = this.getDefaultView_();
 
     // <if expr="chromeos_ash">
     if (this.isArcAccountRestrictionsEnabled_ &&
         view === View.ARC_ACCOUNT_PICKER) {
-      this.shadowRoot.querySelector('arc-account-picker-app')
-          .loadAccounts()
-          .then(
-              accountsFound => {
-                this.switchView_(
-                    accountsFound ? View.ARC_ACCOUNT_PICKER : View.WELCOME);
-              },
-              reject => {
-                this.switchView_(View.WELCOME);
-              });
+      const arcAccountPickerApp =
+          this.shadowRoot!.querySelector('arc-account-picker-app');
+      assert(arcAccountPickerApp);
+      arcAccountPickerApp.loadAccounts().then(
+          (accountsFound: boolean) => {
+            this.switchView_(
+                accountsFound ? View.ARC_ACCOUNT_PICKER : View.WELCOME);
+          },
+          (_error: Error) => {
+            this.switchView_(View.WELCOME);
+          });
       return;
     }
     // </if>
@@ -478,11 +451,7 @@
     this.switchView_(view);
   }
 
-  /**
-   * @return {View}
-   * @private
-   */
-  getDefaultView_() {
+  private getDefaultView_(): View {
     // TODO(https://crbug.com/1155041): simplify this when the file will be
     // split into CrOS and non-CrOS parts.
     // <if expr="not chromeos_ash">
@@ -506,23 +475,19 @@
   }
 
   /**
-   * @param {View} id identifier of the view that should be shown.
-   * @param {string} enterAnimation enter animation for the new view.
-   * @param {string} exitAnimation exit animation for the previous view.
-   * @private
+   * @param id identifier of the view that should be shown.
+   * @param enterAnimation enter animation for the new view.
+   * @param exitAnimation exit animation for the previous view.
    */
-  switchView_(id, enterAnimation = 'fade-in', exitAnimation = 'fade-out') {
+  private switchView_(
+      id: View, enterAnimation: string = 'fade-in',
+      exitAnimation: string = 'fade-out') {
     this.currentView_ = id;
-    /** @type {CrViewManagerElement} */ (this.$.viewManager)
-        .switchView(id, enterAnimation, exitAnimation);
+    this.$.viewManager.switchView(id, enterAnimation, exitAnimation);
     this.dispatchEvent(new CustomEvent('switch-view-notify-for-testing'));
   }
 
-  /**
-   * @return {boolean}
-   * @private
-   */
-  isWelcomePageEnabled_() {
+  private isWelcomePageEnabled_(): boolean {
     // <if expr="not chromeos_ash">
     return false;
     // </if>
@@ -537,12 +502,8 @@
    * Shows the sign-in blocked by policy screen if the user account is not
    * allowed to sign-in. Or shows the sign-in error screen if any error occurred
    * during the sign-in flow.
-   * @param {{email:string, hostedDomain:string, signinBlockedByPolicy:boolean,
-   *  deviceType:string}}
-   * data parameters.
-   * @private
    */
-  signinErrorShowView_(data) {
+  private signinErrorShowView_(data: SigninErrorPageData) {
     this.verifyingAccount_ = false;
     if (data.signinBlockedByPolicy) {
       this.set('email_', data.email);
@@ -557,15 +518,14 @@
     this.setFocusToWebview_();
   }
 
-  /** @private */
-  onOkButtonClick_() {
+  private onOkButtonClick_() {
     switch (this.currentView_) {
       case View.WELCOME:
         this.switchView_(View.ADD_ACCOUNT);
-        const skipChecked =
-            /** @type {WelcomePageAppElement} */ (
-                this.shadowRoot.querySelector('welcome-page-app'))
-                .isSkipCheckboxChecked();
+        const welcomePageApp =
+            this.shadowRoot!.querySelector('welcome-page-app');
+        assert(welcomePageApp);
+        const skipChecked = welcomePageApp.isSkipCheckboxChecked();
         this.browserProxy_.skipWelcomePage(skipChecked);
         this.setFocusToWebview_();
         break;
@@ -576,17 +536,21 @@
     }
   }
 
-  /** @private */
-  setFocusToWebview_() {
+  private setFocusToWebview_() {
     this.$.signinFrame.focus();
   }
   // </if>
 
-  /** @param {Object} authExtHost */
-  setAuthExtHostForTest(authExtHost) {
-    this.authExtHost_ = /** @type {!Authenticator} */ (authExtHost);
+  private setAuthExtHostForTest(authExtHost: Authenticator) {
+    this.authExtHost_ = authExtHost;
     this.addAuthExtHostListeners_();
   }
 }
 
+declare global {
+  interface HTMLElementTagNameMap {
+    'inline-login-app': InlineLoginAppElement;
+  }
+}
+
 customElements.define(InlineLoginAppElement.is, InlineLoginAppElement);
diff --git a/chrome/browser/resources/inline_login/inline_login_browser_proxy.js b/chrome/browser/resources/inline_login/inline_login_browser_proxy.js
deleted file mode 100644
index fa09908..0000000
--- a/chrome/browser/resources/inline_login/inline_login_browser_proxy.js
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2020 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {assert} from 'chrome://resources/js/assert.js';
-import {addSingletonGetter, sendWithPromise} from 'chrome://resources/js/cr.m.js';
-
-import {AuthCompletedCredentials} from './gaia_auth_host/authenticator.js';
-
-/** @interface */
-export class InlineLoginBrowserProxy {
-  /** Send 'initialize' message to prepare for starting auth. */
-  initialize() {}
-
-  /**
-   * Send 'authExtensionReady' message to handle tasks after auth extension
-   * loads.
-   */
-  authExtensionReady() {}
-
-  /**
-   * Send 'switchToFullTab' message to switch the UI from a constrained dialog
-   * to a full tab.
-   * @param {!string} url
-   */
-  switchToFullTab(url) {}
-
-  /**
-   * Send 'completeLogin' message to complete login.
-   * @param {!AuthCompletedCredentials} credentials
-   */
-  completeLogin(credentials) {}
-
-  /**
-   * Send 'lstFetchResults' message.
-   * @param {string} arg The string representation of the json data returned by
-   * the sign in dialog after it has finished the sign in process.
-   */
-  lstFetchResults(arg) {}
-
-  /**
-   * Send 'metricsHandler:recordAction' message.
-   * @param {string} metricsAction The action to be recorded.
-   */
-  recordAction(metricsAction) {}
-
-  /** Send 'showIncognito' message to the handler */
-  showIncognito() {}
-
-  /**
-   * Send 'getAccounts' message to the handler. The promise will be resolved
-   * with the list of emails of accounts in session.
-   * @return {Promise<Array<string>>}
-   */
-  getAccounts() {}
-
-  /** Send 'dialogClose' message to close the login dialog. */
-  dialogClose() {}
-
-  // <if expr="chromeos_ash">
-  /**
-   * Send 'skipWelcomePage' message to the handler.
-   * @param {boolean} skip Whether the welcome page should be skipped.
-   */
-  skipWelcomePage(skip) {}
-
-  /** Send 'openGuestWindow' message to the handler */
-  openGuestWindow() {}
-
-  /**
-   * @return {?string} JSON-encoded dialog arguments.
-   */
-  getDialogArguments() {}
-  // </if>
-}
-
-/** @implements {InlineLoginBrowserProxy} */
-export class InlineLoginBrowserProxyImpl {
-  /** @override */
-  initialize() {
-    chrome.send('initialize');
-  }
-
-  /** @override */
-  authExtensionReady() {
-    chrome.send('authExtensionReady');
-  }
-
-  /** @override */
-  switchToFullTab(url) {
-    chrome.send('switchToFullTab', [url]);
-  }
-
-  /** @override */
-  completeLogin(credentials) {
-    chrome.send('completeLogin', [credentials]);
-  }
-
-  /** @override */
-  lstFetchResults(arg) {
-    chrome.send('lstFetchResults', [arg]);
-  }
-
-  /** @override */
-  recordAction(metricsAction) {
-    chrome.send('metricsHandler:recordAction', [metricsAction]);
-  }
-
-  /** @override */
-  showIncognito() {
-    chrome.send('showIncognito');
-  }
-
-  /** @override */
-  getAccounts() {
-    return sendWithPromise('getAccounts');
-  }
-
-  /** @override */
-  dialogClose() {
-    chrome.send('dialogClose');
-  }
-
-  // <if expr="chromeos_ash">
-  /** @override */
-  skipWelcomePage(skip) {
-    chrome.send('skipWelcomePage', [skip]);
-  }
-
-  /** @override */
-  openGuestWindow() {
-    chrome.send('openGuestWindow');
-  }
-
-  /** @override */
-  getDialogArguments() {
-    return chrome.getVariableValue('dialogArguments');
-  }
-  // </if>
-}
-
-addSingletonGetter(InlineLoginBrowserProxyImpl);
diff --git a/chrome/browser/resources/inline_login/inline_login_browser_proxy.ts b/chrome/browser/resources/inline_login/inline_login_browser_proxy.ts
new file mode 100644
index 0000000..1d4d2699
--- /dev/null
+++ b/chrome/browser/resources/inline_login/inline_login_browser_proxy.ts
@@ -0,0 +1,131 @@
+// Copyright 2020 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {AuthCompletedCredentials} from 'chrome://chrome-signin/gaia_auth_host/authenticator.js';
+import {sendWithPromise} from 'chrome://resources/js/cr.m.js';
+
+export interface InlineLoginBrowserProxy {
+  /** Send 'initialize' message to prepare for starting auth. */
+  initialize(): void;
+
+  /**
+   * Send 'authExtensionReady' message to handle tasks after auth extension
+   * loads.
+   */
+  authExtensionReady(): void;
+
+  /**
+   * Send 'switchToFullTab' message to switch the UI from a constrained dialog
+   * to a full tab.
+   */
+  switchToFullTab(url: string): void;
+
+  /**
+   * Send 'completeLogin' message to complete login.
+   */
+  completeLogin(credentials: AuthCompletedCredentials): void;
+
+  /**
+   * Send 'lstFetchResults' message.
+   * @param arg The string representation of the json data returned by
+   *     the sign in dialog after it has finished the sign in process.
+   */
+  lstFetchResults(arg: string): void;
+
+  /**
+   * Send 'metricsHandler:recordAction' message.
+   * @param metricsAction The action to be recorded.
+   */
+  recordAction(metricsAction: string): void;
+
+  /** Send 'showIncognito' message to the handler */
+  showIncognito(): void;
+
+  /**
+   * Send 'getAccounts' message to the handler. The promise will be resolved
+   * with the list of emails of accounts in session.
+   */
+  getAccounts(): Promise<string[]>;
+
+  /** Send 'dialogClose' message to close the login dialog. */
+  dialogClose(): void;
+
+  // <if expr="chromeos_ash">
+  /**
+   * Send 'skipWelcomePage' message to the handler.
+   * @param skip Whether the welcome page should be skipped.
+   */
+  skipWelcomePage(skip: boolean): void;
+
+  /** Send 'openGuestWindow' message to the handler */
+  openGuestWindow(): void;
+
+  /**
+   * @return JSON-encoded dialog arguments.
+   */
+  getDialogArguments(): string|null;
+  // </if>
+}
+
+export class InlineLoginBrowserProxyImpl implements InlineLoginBrowserProxy {
+  initialize() {
+    chrome.send('initialize');
+  }
+
+  authExtensionReady() {
+    chrome.send('authExtensionReady');
+  }
+
+  switchToFullTab(url: string) {
+    chrome.send('switchToFullTab', [url]);
+  }
+
+  completeLogin(credentials: AuthCompletedCredentials) {
+    chrome.send('completeLogin', [credentials]);
+  }
+
+  lstFetchResults(arg: string) {
+    chrome.send('lstFetchResults', [arg]);
+  }
+
+  recordAction(metricsAction: string) {
+    chrome.send('metricsHandler:recordAction', [metricsAction]);
+  }
+
+  showIncognito() {
+    chrome.send('showIncognito');
+  }
+
+  getAccounts() {
+    return sendWithPromise('getAccounts');
+  }
+
+  dialogClose() {
+    chrome.send('dialogClose');
+  }
+
+  // <if expr="chromeos_ash">
+  skipWelcomePage(skip: boolean) {
+    chrome.send('skipWelcomePage', [skip]);
+  }
+
+  openGuestWindow() {
+    chrome.send('openGuestWindow');
+  }
+
+  getDialogArguments() {
+    return chrome.getVariableValue('dialogArguments');
+  }
+  // </if>
+
+  static getInstance(): InlineLoginBrowserProxy {
+    return instance || (instance = new InlineLoginBrowserProxyImpl());
+  }
+
+  static setInstance(obj: InlineLoginBrowserProxy) {
+    instance = obj;
+  }
+}
+
+let instance: InlineLoginBrowserProxy|null = null;
diff --git a/chrome/browser/resources/inline_login/signin_blocked_by_policy_page.js b/chrome/browser/resources/inline_login/signin_blocked_by_policy_page.ts
similarity index 77%
rename from chrome/browser/resources/inline_login/signin_blocked_by_policy_page.js
rename to chrome/browser/resources/inline_login/signin_blocked_by_policy_page.ts
index 8069525..1648cf4 100644
--- a/chrome/browser/resources/inline_login/signin_blocked_by_policy_page.js
+++ b/chrome/browser/resources/inline_login/signin_blocked_by_policy_page.ts
@@ -15,7 +15,6 @@
 
 import {getTemplate} from './signin_blocked_by_policy_page.html.js';
 
-/** @polymer */
 export class SigninBlockedByPolicyPageElement extends PolymerElement {
   static get is() {
     return 'signin-blocked-by-policy-page';
@@ -28,15 +27,14 @@
   /**
    * Gets body text with the respective user email and hosted domain for the
    * user that went through the sign-in flow.
-   * @param {string} email User's email used in the sign-in flow.
-   * @param {string} hostedDomain Hosted domain of the user's email used in the
-   *     sign-in flow.
-   * @param {string} deviceType name of the Chrome device type (e.g. Chromebook,
+   * @param email User's email used in the sign-in flow.
+   * @param hostedDomain Hosted domain of the user's email used in the sign-in
+   *     flow.
+   * @param deviceType name of the Chrome device type (e.g. Chromebook,
    *     Chromebox).
-   * @return {string}
-   * @private
    */
-  getBodyText_(email, hostedDomain, deviceType) {
+  private getBodyText_(email: string, hostedDomain: string, deviceType: string):
+      string {
     return loadTimeData.getStringF(
         'accountManagerDialogSigninBlockedByPolicyBody', email, hostedDomain,
         deviceType);
diff --git a/chrome/browser/resources/inline_login/signin_error_page.js b/chrome/browser/resources/inline_login/signin_error_page.ts
similarity index 97%
rename from chrome/browser/resources/inline_login/signin_error_page.js
rename to chrome/browser/resources/inline_login/signin_error_page.ts
index 3918db5f..9e6299151 100644
--- a/chrome/browser/resources/inline_login/signin_error_page.js
+++ b/chrome/browser/resources/inline_login/signin_error_page.ts
@@ -14,7 +14,6 @@
 
 import {getTemplate} from './signin_error_page.html.js';
 
-/** @polymer */
 export class SigninErrorPageElement extends PolymerElement {
   static get is() {
     return 'signin-error-page';
diff --git a/chrome/browser/resources/inline_login/tsconfig_base.json b/chrome/browser/resources/inline_login/tsconfig_base.json
new file mode 100644
index 0000000..afa07315
--- /dev/null
+++ b/chrome/browser/resources/inline_login/tsconfig_base.json
@@ -0,0 +1,8 @@
+{
+  "extends": "../../../../tools/typescript/tsconfig_base.json",
+  "compilerOptions": {
+    "noUncheckedIndexedAccess": false,
+    "noUnusedLocals": false,
+    "strictPropertyInitialization": false
+  }
+}
diff --git a/chrome/browser/resources/inline_login/welcome_page_app.js b/chrome/browser/resources/inline_login/welcome_page_app.ts
similarity index 75%
rename from chrome/browser/resources/inline_login/welcome_page_app.js
rename to chrome/browser/resources/inline_login/welcome_page_app.ts
index 760b67e..0a8621c 100644
--- a/chrome/browser/resources/inline_login/welcome_page_app.js
+++ b/chrome/browser/resources/inline_login/welcome_page_app.ts
@@ -7,16 +7,22 @@
 import 'chrome://resources/cr_elements/cr_toggle/cr_toggle.js';
 import './account_manager_shared_css.js';
 
+import {getAccountAdditionOptionsFromJSON} from 'chrome://chrome-signin/arc_account_picker/arc_util.js';
+import {CrCheckboxElement} from 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.js';
 import {assert} from 'chrome://resources/js/assert.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
-import {getAccountAdditionOptionsFromJSON} from './arc_account_picker/arc_util.js';
 import {InlineLoginBrowserProxyImpl} from './inline_login_browser_proxy.js';
 import {getTemplate} from './welcome_page_app.html.js';
 
 
-/** @polymer */
+export interface WelcomePageAppElement {
+  $: {
+    checkbox: CrCheckboxElement,
+  };
+}
+
 export class WelcomePageAppElement extends PolymerElement {
   static get is() {
     return 'welcome-page-app';
@@ -59,8 +65,11 @@
     };
   }
 
-  /** @override */
-  ready() {
+  private isAvailableInArc: boolean;
+  private isArcFlow_: boolean;
+  private isArcAccountRestrictionsEnabled_: boolean;
+
+  override ready() {
     super.ready();
 
     if (this.isArcAccountRestrictionsEnabled_) {
@@ -82,30 +91,28 @@
     this.setUpLinkCallbacks_();
   }
 
-  /** @return {boolean} */
-  isSkipCheckboxChecked() {
+  isSkipCheckboxChecked(): boolean {
     return !!this.$.checkbox && this.$.checkbox.checked;
   }
 
-  /** @private */
-  setUpLinkCallbacks_() {
-    [this.shadowRoot.querySelector('#osSettingsLink'),
-     this.shadowRoot.querySelector('#appsSettingsLink'),
-     this.shadowRoot.querySelector('#newPersonLink')]
+  private setUpLinkCallbacks_() {
+    [this.shadowRoot!.querySelector('#osSettingsLink'),
+     this.shadowRoot!.querySelector('#appsSettingsLink'),
+     this.shadowRoot!.querySelector('#newPersonLink')]
         .filter(link => !!link)
         .forEach(link => {
-          link.addEventListener(
+          link!.addEventListener(
               'click',
               () => this.dispatchEvent(new CustomEvent('opened-new-window')));
         });
 
     if (this.isArcAccountRestrictionsEnabled_) {
-      const guestModeLink = this.shadowRoot.querySelector('#guestModeLink');
+      const guestModeLink = this.shadowRoot!.querySelector('#guestModeLink');
       if (guestModeLink) {
         guestModeLink.addEventListener('click', () => this.openGuestLink_());
       }
     } else {
-      const incognitoLink = this.shadowRoot.querySelector('#incognitoLink');
+      const incognitoLink = this.shadowRoot!.querySelector('#incognitoLink');
       if (incognitoLink) {
         incognitoLink.addEventListener(
             'click', () => this.openIncognitoLink_());
@@ -113,28 +120,16 @@
     }
   }
 
-  /**
-   * @return {boolean}
-   * @private
-   */
-  isArcToggleVisible_() {
+  private isArcToggleVisible_(): boolean {
     return this.isArcAccountRestrictionsEnabled_ && !this.isArcFlow_;
   }
 
-  /**
-   * @return {string}
-   * @private
-   */
-  getWelcomeTitle_() {
+  private getWelcomeTitle_(): string {
     return loadTimeData.getStringF(
         'accountManagerDialogWelcomeTitle', loadTimeData.getString('userName'));
   }
 
-  /**
-   * @return {string}
-   * @private
-   */
-  getWelcomeBody_() {
+  private getWelcomeBody_(): string {
     const welcomeBodyKey =
         (this.isArcAccountRestrictionsEnabled_ && this.isArcFlow_) ?
         'accountManagerDialogWelcomeBodyArc' :
@@ -142,17 +137,21 @@
     return loadTimeData.getString(welcomeBodyKey);
   }
 
-  /** @private */
-  openIncognitoLink_() {
+  private openIncognitoLink_() {
     InlineLoginBrowserProxyImpl.getInstance().showIncognito();
     // `showIncognito` will close the dialog.
   }
 
-  /** @private */
-  openGuestLink_() {
+  private openGuestLink_() {
     InlineLoginBrowserProxyImpl.getInstance().openGuestWindow();
     // `openGuestWindow` will close the dialog.
   }
 }
 
+declare global {
+  interface HTMLElementTagNameMap {
+    'welcome-page-app': WelcomePageAppElement;
+  }
+}
+
 customElements.define(WelcomePageAppElement.is, WelcomePageAppElement);
diff --git a/chrome/browser/resources/new_tab_page/app.ts b/chrome/browser/resources/new_tab_page/app.ts
index 1b277f3..5dd0ceb 100644
--- a/chrome/browser/resources/new_tab_page/app.ts
+++ b/chrome/browser/resources/new_tab_page/app.ts
@@ -408,7 +408,8 @@
   // Called to update the OGB of relevant NTP state changes.
   private udpateOneGoogleBarAppearance_() {
     if (this.oneGoogleBarLoaded_) {
-      const isNtpDarkTheme = this.theme_ && this.theme_.isDark;
+      const isNtpDarkTheme =
+          this.theme_ && (!!this.theme_.backgroundImage || this.theme_.isDark);
       $$<IframeElement>(this, '#oneGoogleBar')!.postMessage({
         type: 'updateAppearance',
         // We should be using a light OGB for dark themes and vice versa.
diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html
index 0f5b8b57..fa7dc9c 100644
--- a/chrome/browser/resources/settings/icons.html
+++ b/chrome/browser/resources/settings/icons.html
@@ -162,8 +162,8 @@
 <if expr="not chromeos_ash">
       <g id="web"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 14H4v-4h11v4zm0-5H4V9h11v4zm5 5h-4V9h4v9z"></path></g>
 </if>
-      <g id="window-placement"><path d="M18 15v5q0 .825-.5875 1.4125Q16.825 22 16 22H4q-.825 0-1.4125-.5875Q2 20.825 2 20v-9q0-.825.5875-1.4125Q3.175 9 4 9h2V4q0-.825.5875-1.4125Q7.175 2 8 2h12q.825 0 1.4125.5875Q22 3.175 22 4v9q0 .825-.5875 1.4125Q20.825 15 20 15ZM4 13v7h12v-7Zm14 0h2V6H8v3h8q.825 0 1.4125.5875Q18 10.175 18 11Z"></path></g>
-      <g id="window-placement-off"><path d="m20.475 23.3-2.6-2.6q-.2.575-.7125.9375Q16.65 22 16 22H4q-.825 0-1.4125-.5875Q2 20.825 2 20v-9q0-.825.5875-1.4125Q3.175 9 4 9h2v-.175L.675 3.5 2.1 2.075l19.8 19.8ZM4 20h12v-1.175L10.175 13H4v7Zm14-4.875L15.875 13l-4-4H16q.825 0 1.4125.5875Q18 10.175 18 11v2h2V6H8.875L6.15 3.275q.2-.575.7-.925Q7.35 2 8 2h12q.825 0 1.4125.5875Q22 3.175 22 4v9q0 .825-.5875 1.4125Q20.825 15 20 15h-2Z"></path></g>
+      <g id="window-management"><path d="M18 15v5q0 .825-.5875 1.4125Q16.825 22 16 22H4q-.825 0-1.4125-.5875Q2 20.825 2 20v-9q0-.825.5875-1.4125Q3.175 9 4 9h2V4q0-.825.5875-1.4125Q7.175 2 8 2h12q.825 0 1.4125.5875Q22 3.175 22 4v9q0 .825-.5875 1.4125Q20.825 15 20 15ZM4 13v7h12v-7Zm14 0h2V6H8v3h8q.825 0 1.4125.5875Q18 10.175 18 11Z"></path></g>
+      <g id="window-management-off"><path d="m20.475 23.3-2.6-2.6q-.2.575-.7125.9375Q16.65 22 16 22H4q-.825 0-1.4125-.5875Q2 20.825 2 20v-9q0-.825.5875-1.4125Q3.175 9 4 9h2v-.175L.675 3.5 2.1 2.075l19.8 19.8ZM4 20h12v-1.175L10.175 13H4v7Zm14-4.875L15.875 13l-4-4H16q.825 0 1.4125.5875Q18 10.175 18 11v2h2V6H8.875L6.15 3.275q.2-.575.7-.925Q7.35 2 8 2h12q.825 0 1.4125.5875Q22 3.175 22 4v9q0 .825-.5875 1.4125Q20.825 15 20 15h-2Z"></path></g>
       <g id="zoom-in"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></g>
       <g id="local-fonts"><path d="M0 0h24v24H0V0z" fill="none"></path><path d="M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 18H4V4h16v16zM10.69 6h2.6l4.51 12h-2.5l-1.01-2.87H9.7L8.7 18H6.2l4.49-12zm2.87 7.06l-1.06-3.02-.43-1.44h-.13l-.44 1.44-1.07 3.02h3.13z"></path></g>
       <g id="local-fonts-off"><path d="M4.83,2H20c1.1,0,2,0.9,2,2v15.17l-2-2V4H6.83L4.83,2z M10.92,6l-0.57,1.52l1.36,1.36l0.23-0.66h0.1l0.54,1.52l3.04,3.04 L13.07,6H10.92z M20.49,23.31L19.17,22H4c-1.1,0-2-0.9-2-2V4.83L0.69,3.51L2.1,2.1l19.8,19.8L20.49,23.31z M17.17,20l-5.07-5.07 H9.58L8.49,18H6.41l2.39-6.37L4,6.83V20H17.17z"></path></g>
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html
index f0192bb..02286f9 100644
--- a/chrome/browser/resources/settings/privacy_page/privacy_page.html
+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html
@@ -966,23 +966,24 @@
         </settings-subpage>
       </template>
       <template is="dom-if" route-path="/content/windowManagement" no-search>
-        <settings-subpage page-title="$i18n{siteSettingsWindowPlacement}"
+        <settings-subpage page-title="$i18n{siteSettingsWindowManagement}"
             search-label="$i18n{siteSettingsAllSitesSearch}"
             search-term="{{searchFilter_}}">
           <div class="content-settings-header secondary">
-            $i18n{siteSettingsWindowPlacementDescription}
+            $i18n{siteSettingsWindowManagementDescription}
           </div>
           <settings-category-default-radio-group
-              category="[[contentSettingsTypesEnum_.WINDOW_PLACEMENT]]"
-              allow-option-label="$i18n{siteSettingsWindowPlacementAsk}"
-              allow-option-icon="settings:window-placement"
-              block-option-label="$i18n{siteSettingsWindowPlacementBlocked}"
-              block-option-icon="settings:window-placement-off">
+              category="[[contentSettingsTypesEnum_.WINDOW_MANAGEMENT]]"
+              allow-option-label="$i18n{siteSettingsWindowManagementAsk}"
+              allow-option-icon="settings:window-management"
+              block-option-label="$i18n{siteSettingsWindowManagementBlocked}"
+              block-option-icon="settings:window-management-off">
           </settings-category-default-radio-group>
           <category-setting-exceptions
-              category="[[contentSettingsTypesEnum_.WINDOW_PLACEMENT]]"
-              allow-header="$i18n{siteSettingsWindowPlacementAskExceptions}"
-              block-header="$i18n{siteSettingsWindowPlacementBlockedExceptions}"
+              category="[[contentSettingsTypesEnum_.WINDOW_MANAGEMENT]]"
+              allow-header="$i18n{siteSettingsWindowManagementAskExceptions}"
+              block-header=
+                  "$i18n{siteSettingsWindowManagementBlockedExceptions}"
               search-filter="[[searchFilter_]]">
           </category-setting-exceptions>
         </settings-subpage>
diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts
index e637213c..762f5c9 100644
--- a/chrome/browser/resources/settings/route.ts
+++ b/chrome/browser/resources/settings/route.ts
@@ -97,7 +97,8 @@
     r.SITE_SETTINGS_BLUETOOTH_SCANNING =
         r.SITE_SETTINGS.createChild('bluetoothScanning');
   }
-  r.SITE_SETTINGS_WINDOW_PLACEMENT =
+
+  r.SITE_SETTINGS_WINDOW_MANAGEMENT =
       r.SITE_SETTINGS.createChild('windowManagement');
   r.SITE_SETTINGS_FILE_SYSTEM_WRITE = r.SITE_SETTINGS.createChild('filesystem');
   r.SITE_SETTINGS_LOCAL_FONTS = r.SITE_SETTINGS.createChild('localFonts');
diff --git a/chrome/browser/resources/settings/settings_routes.ts b/chrome/browser/resources/settings/settings_routes.ts
index 300701d..964998b 100644
--- a/chrome/browser/resources/settings/settings_routes.ts
+++ b/chrome/browser/resources/settings/settings_routes.ts
@@ -84,7 +84,7 @@
   SITE_SETTINGS_USB_DEVICES: Route;
   SITE_SETTINGS_SERIAL_PORTS: Route;
   SITE_SETTINGS_VR: Route;
-  SITE_SETTINGS_WINDOW_PLACEMENT: Route;
+  SITE_SETTINGS_WINDOW_MANAGEMENT: Route;
   SITE_SETTINGS_ZOOM_LEVELS: Route;
   SPELL_CHECK: Route;
   SYNC: Route;
diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts
index a3af44a..52dffb56 100644
--- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts
+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts
@@ -217,7 +217,7 @@
       case ContentSettingsTypes.SERIAL_PORTS:
       case ContentSettingsTypes.USB_DEVICES:
       case ContentSettingsTypes.VR:
-      case ContentSettingsTypes.WINDOW_PLACEMENT:
+      case ContentSettingsTypes.WINDOW_MANAGEMENT:
         // "Ask" vs "Blocked".
         this.browserProxy.setDefaultValueForContentType(
             this.category,
diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts
index b51c1d2..566fb09 100644
--- a/chrome/browser/resources/settings/site_settings/constants.ts
+++ b/chrome/browser/resources/settings/site_settings/constants.ts
@@ -40,7 +40,7 @@
   SOUND = 'sound',
   USB_DEVICES = 'usb-devices',
   VR = 'vr',
-  WINDOW_PLACEMENT = 'window-placement',
+  WINDOW_MANAGEMENT = 'window-placement',
   ZOOM_LEVELS = 'zoom-levels',
 
   // The following item is not in the C++ kContentSettingsTypeGroupNames, but it
diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts
index 524c4f79..caefac3 100644
--- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts
+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts
@@ -158,7 +158,7 @@
       case ContentSettingsTypes.SERIAL_PORTS:
       case ContentSettingsTypes.USB_DEVICES:
       case ContentSettingsTypes.VR:
-      case ContentSettingsTypes.WINDOW_PLACEMENT:
+      case ContentSettingsTypes.WINDOW_MANAGEMENT:
         // "Ask" vs "Blocked".
         return ContentSetting.ASK;
       default:
diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html
index 119a7092..8c0959d 100644
--- a/chrome/browser/resources/settings/site_settings/site_details.html
+++ b/chrome/browser/resources/settings/site_settings/site_details.html
@@ -104,7 +104,7 @@
                   [[numCookies_]]
                 </div>
               </div>
-              <div id="fpsMembership" class="secondary" 
+              <div id="fpsMembership" class="secondary"
                   hidden$="[[!fpsMembership_]]">
                 [[fpsMembership_]]
               </div>
@@ -245,9 +245,9 @@
           label="$i18n{siteSettingsIdleDetection}">
       </site-details-permission>
       <site-details-permission
-          category="[[contentSettingsTypesEnum_.WINDOW_PLACEMENT]]"
-          icon="settings:window-placement"
-          label="$i18n{siteSettingsWindowPlacement}">
+          category="[[contentSettingsTypesEnum_.WINDOW_MANAGEMENT]]"
+          icon="settings:window-management"
+          label="$i18n{siteSettingsWindowManagement}">
       </site-details-permission>
       <site-details-permission
           category="[[contentSettingsTypesEnum_.LOCAL_FONTS]]"
diff --git a/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts
index 385ebd6..ab4bc8c2 100644
--- a/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts
+++ b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts
@@ -190,8 +190,8 @@
         return this.i18n('siteSettingsArMidSentence');
       case ContentSettingsTypes.VR:
         return this.i18n('siteSettingsVrMidSentence');
-      case ContentSettingsTypes.WINDOW_PLACEMENT:
-        return this.i18n('siteSettingsWindowPlacementMidSentence');
+      case ContentSettingsTypes.WINDOW_MANAGEMENT:
+        return this.i18n('siteSettingsWindowManagementMidSentence');
       case ContentSettingsTypes.LOCAL_FONTS:
         return this.i18n('siteSettingsFontAccessMidSentence');
       case ContentSettingsTypes.IDLE_DETECTION:
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts
index 5ff4c011..fa983c96 100644
--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts
+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts
@@ -300,12 +300,12 @@
       disabledLabel: 'siteSettingsVrBlocked',
     },
     {
-      route: routes.SITE_SETTINGS_WINDOW_PLACEMENT,
-      id: Id.WINDOW_PLACEMENT,
-      label: 'siteSettingsWindowPlacement',
-      icon: 'settings:window-placement',
-      enabledLabel: 'siteSettingsWindowPlacementAsk',
-      disabledLabel: 'siteSettingsWindowPlacementBlocked',
+      route: routes.SITE_SETTINGS_WINDOW_MANAGEMENT,
+      id: Id.WINDOW_MANAGEMENT,
+      label: 'siteSettingsWindowManagement',
+      icon: 'settings:window-management',
+      enabledLabel: 'siteSettingsWindowManagementAsk',
+      disabledLabel: 'siteSettingsWindowManagementBlocked',
     },
     {
       route: routes.SITE_SETTINGS_ZOOM_LEVELS,
@@ -378,7 +378,7 @@
               Id.AR,
               Id.VR,
               Id.IDLE_DETECTION,
-              Id.WINDOW_PLACEMENT,
+              Id.WINDOW_MANAGEMENT,
               Id.LOCAL_FONTS,
             ]),
             contentBasic: buildItemListFromIds([
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc b/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc
index 18eb521..c8019f2 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc
@@ -6,6 +6,7 @@
 
 #include "base/command_line.h"
 #include "base/rand_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/enterprise/connectors/analysis/analysis_settings.h"
@@ -123,7 +124,7 @@
 
 void BinaryUploadService::Request::clear_dlp_scan_request() {
   auto* tags = content_analysis_request_.mutable_tags();
-  auto it = std::find(tags->begin(), tags->end(), "dlp");
+  auto it = base::ranges::find(*tags, "dlp");
   if (it != tags->end())
     tags->erase(it);
 }
diff --git a/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc b/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
index 27bef15..2fd44e0b 100644
--- a/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/deep_scanning_request_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/callback_forward.h"
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/containers/flat_map.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/raw_ptr.h"
@@ -140,9 +141,7 @@
   void MaybeAcknowledge(std::unique_ptr<Ack> ack) override {
     EXPECT_EQ(final_action_, ack->ack().final_action());
     ++num_acks_;
-    ASSERT_NE(requests_tokens_.end(),
-              std::find(requests_tokens_.begin(), requests_tokens_.end(),
-                        ack->ack().request_token()));
+    ASSERT_TRUE(base::Contains(requests_tokens_, ack->ack().request_token()));
   }
 
   void SetResponse(const base::FilePath& path,
diff --git a/chrome/browser/safe_browsing/extension_telemetry/potential_password_theft_signal_processor.cc b/chrome/browser/safe_browsing/extension_telemetry/potential_password_theft_signal_processor.cc
index ef5990d..35d35bf 100644
--- a/chrome/browser/safe_browsing/extension_telemetry/potential_password_theft_signal_processor.cc
+++ b/chrome/browser/safe_browsing/extension_telemetry/potential_password_theft_signal_processor.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/safe_browsing/extension_telemetry/potential_password_theft_signal_processor.h"
 
 #include "base/check_op.h"
+#include "base/containers/contains.h"
 #include "chrome/browser/safe_browsing/extension_telemetry/password_reuse_signal.h"
 #include "chrome/browser/safe_browsing/extension_telemetry/remote_host_contacted_signal.h"
 #include "components/safe_browsing/core/common/proto/csd.pb.h"
@@ -37,9 +38,8 @@
     extension_id = rhc_signal.extension_id();
     (remote_host_url_queue_[extension_id])
         .emplace_back(std::make_pair(host_url, signal_creation_time));
-  }
-  // Process password reuse signal.
-  else {
+  } else {
+    // Process password reuse signal.
     const auto& pw_reuse_signal =
         static_cast<const PasswordReuseSignal&>(signal);
     extension_id = pw_reuse_signal.extension_id();
@@ -109,8 +109,7 @@
       // Each password reuse event has a reputable domain list, aka
       // matching_domains. Remote host urls that are in the reputable domain
       // lists associated with the password reuse events will not be added.
-      if (std::find(matching_domains.begin(), matching_domains.end(),
-                    host_url) == matching_domains.end()) {
+      if (!base::Contains(matching_domains, host_url)) {
         temp_remote_host_url_queue.push_back(host_url);
       }
     }
@@ -156,8 +155,7 @@
   reuse_info.count += 1;
   for (auto& domain : incoming_reuse_info.matching_domains) {
     // Update the matching domain list once we find new domains.
-    if (std::find(matching_domains.begin(), matching_domains.end(), domain) ==
-        matching_domains.end()) {
+    if (!base::Contains(matching_domains, domain)) {
       matching_domains.push_back(domain);
     }
   }
diff --git a/chrome/browser/share/share_ranking.cc b/chrome/browser/share/share_ranking.cc
index e0848ac63..c4d1cac6 100644
--- a/chrome/browser/share/share_ranking.cc
+++ b/chrome/browser/share/share_ranking.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/share/share_ranking.h"
 
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
@@ -92,8 +93,8 @@
   DCHECK(RankingContains(ranking, from));
   DCHECK(RankingContains(ranking, to));
 
-  auto from_loc = std::find(ranking.begin(), ranking.end(), from);
-  auto to_loc = std::find(ranking.begin(), ranking.end(), to);
+  auto from_loc = base::ranges::find(ranking, from);
+  auto to_loc = base::ranges::find(ranking, to);
   *from_loc = to;
   *to_loc = from;
 }
diff --git a/chrome/browser/speech/extension_api/tts_extension_api.cc b/chrome/browser/speech/extension_api/tts_extension_api.cc
index 9208732..45c7aed1 100644
--- a/chrome/browser/speech/extension_api/tts_extension_api.cc
+++ b/chrome/browser/speech/extension_api/tts_extension_api.cc
@@ -300,12 +300,14 @@
 
   std::unique_ptr<content::TtsUtterance> utterance;
   if (extension()) {
-    extensions::ExtensionHost* host =
+    extensions::ExtensionHost* extension_host =
         extensions::ProcessManager::Get(browser_context())
             ->GetBackgroundHostForExtension(extension()->id());
 
-    if (host && host->host_contents())
-      utterance = content::TtsUtterance::Create(host->host_contents());
+    if (extension_host && extension_host->host_contents()) {
+      utterance =
+          content::TtsUtterance::Create(extension_host->host_contents());
+    }
   }
 
   if (!utterance)
diff --git a/chrome/browser/spellchecker/spellcheck_language_policy_handlers_unittest.cc b/chrome/browser/spellchecker/spellcheck_language_policy_handlers_unittest.cc
index 2166b2b..e271190 100644
--- a/chrome/browser/spellchecker/spellcheck_language_policy_handlers_unittest.cc
+++ b/chrome/browser/spellchecker/spellcheck_language_policy_handlers_unittest.cc
@@ -14,6 +14,7 @@
 #include <string>
 #include <vector>
 
+#include "base/containers/contains.h"
 #include "base/strings/string_util.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/values.h"
@@ -91,8 +92,7 @@
 
       for (const auto& language : languages_list->GetListDeprecated()) {
         EXPECT_TRUE(language.is_string());
-        EXPECT_TRUE(std::find(expected.begin(), expected.end(),
-                              language.GetString()) != expected.end());
+        EXPECT_TRUE(base::Contains(expected, language.GetString()));
       }
     } else {
       EXPECT_FALSE(is_spellcheck_enabled_pref_set);
diff --git a/chrome/browser/supervised_user/android/favicon_fetcher.cc b/chrome/browser/supervised_user/android/favicon_fetcher.cc
index 0e42474..27366c8 100644
--- a/chrome/browser/supervised_user/android/favicon_fetcher.cc
+++ b/chrome/browser/supervised_user/android/favicon_fetcher.cc
@@ -12,12 +12,9 @@
 #include "base/callback.h"
 #include "base/logging.h"
 #include "base/task/cancelable_task_tracker.h"
-#include "chrome/browser/favicon/large_icon_service_factory.h"
-#include "chrome/browser/profiles/profile.h"
 #include "components/favicon/core/large_icon_service.h"
 #include "components/favicon_base/favicon_callback.h"
 #include "components/favicon_base/favicon_types.h"
-#include "content/public/browser/browser_context.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
 #include "ui/gfx/android/java_bitmap.h"
 #include "ui/gfx/image/image.h"
@@ -25,9 +22,15 @@
 #include "ui/gfx/image/image_skia_rep.h"
 #include "url/gurl.h"
 
-FaviconFetcher::FaviconFetcher(Profile* profile)
-    : large_icon_service_(
-          LargeIconServiceFactory::GetForBrowserContext(profile)) {}
+FaviconFetcher::FaviconFetcher(
+    raw_ptr<favicon::LargeIconService> large_icon_service)
+    : large_icon_service_(large_icon_service) {}
+
+FaviconFetcher::~FaviconFetcher() {}
+
+void FaviconFetcher::Destroy() {
+  delete this;
+}
 
 void FaviconFetcher::OnFaviconDownloaded(
     const GURL& url,
@@ -41,10 +44,17 @@
     LOG(WARNING)
         << "Unable to obtain a favicon image with the required specs for "
         << url.host();
-    delete this;
+    Destroy();
   }
 }
 
+void FaviconFetcher::ExecuteFaviconCallback(
+    const base::android::ScopedJavaGlobalRef<jobject>& callback,
+    SkBitmap bitmap) {
+  base::android::RunObjectCallbackAndroid(callback,
+                                          gfx::ConvertToJavaBitmap(bitmap));
+}
+
 void FaviconFetcher::OnGetFaviconFromCacheFinished(
     const GURL& url,
     bool continue_to_server,
@@ -56,9 +66,8 @@
         image_result.image.AsImageSkia().GetRepresentation(1.0f).GetBitmap();
     // Return the image to the caller by executing the callback and destroy this
     // instance.
-    base::android::RunObjectCallbackAndroid(
-        callback, gfx::ConvertToJavaBitmap(faviconBitmap));
-    delete this;
+    ExecuteFaviconCallback(callback, faviconBitmap);
+    Destroy();
     return;
   }
 
@@ -96,10 +105,14 @@
                            base::Unretained(this), url, std::move(callback),
                            faviconDimensions));
   } else {
-    delete this;
+    Destroy();
   }
 }
 
+base::WeakPtr<FaviconFetcher> FaviconFetcher::GetWeakPtr() {
+  return weak_factory_.GetWeakPtr();
+}
+
 void FaviconFetcher::FetchFavicon(
     const GURL& url,
     bool continue_to_server,
diff --git a/chrome/browser/supervised_user/android/favicon_fetcher.h b/chrome/browser/supervised_user/android/favicon_fetcher.h
index f1db14f..967af65 100644
--- a/chrome/browser/supervised_user/android/favicon_fetcher.h
+++ b/chrome/browser/supervised_user/android/favicon_fetcher.h
@@ -6,23 +6,27 @@
 #define CHROME_BROWSER_SUPERVISED_USER_ANDROID_FAVICON_FETCHER_H_
 
 #include "base/memory/raw_ptr.h"
+#include "base/memory/weak_ptr.h"
 #include "base/task/cancelable_task_tracker.h"
-#include "chrome/browser/profiles/profile.h"
 #include "components/favicon/core/large_icon_service.h"
 #include "components/favicon_base/favicon_callback.h"
 #include "components/favicon_base/favicon_types.h"
 #include "ui/gfx/image/image.h"
+#include "ui/gfx/image/image_skia.h"
 #include "url/gurl.h"
 
 class FaviconFetcher {
  public:
-  explicit FaviconFetcher(Profile* profile);
+  explicit FaviconFetcher(
+      raw_ptr<favicon::LargeIconService> large_icon_service);
 
   FaviconFetcher() = delete;
 
   FaviconFetcher(const FaviconFetcher&) = delete;
 
-  ~FaviconFetcher() = default;
+  FaviconFetcher& operator=(const FaviconFetcher&) = delete;
+
+  virtual ~FaviconFetcher();
 
   // Initiates a request to fetch a favicon for a specific url.
   // Wraps the calls to a service that obtains the favicon and returns
@@ -35,6 +39,8 @@
       int desired_side_size_in_pixel,
       const base::android::ScopedJavaGlobalRef<jobject>& callback);
 
+  base::WeakPtr<FaviconFetcher> GetWeakPtr();
+
  private:
   // Wrapper for favicon specs.
   struct FaviconDimensions {
@@ -59,9 +65,18 @@
       FaviconDimensions faviconDimensions,
       const favicon_base::LargeIconImageResult& image_result);
 
+  // Helper method for returning the favicon to the caller.
+  virtual void ExecuteFaviconCallback(
+      const base::android::ScopedJavaGlobalRef<jobject>& callback,
+      SkBitmap bitmap);
+
+  // Helper destructor wrapper.
+  virtual void Destroy();
+
   // Required for execution of icon fetching.
   raw_ptr<favicon::LargeIconService> large_icon_service_;
   base::CancelableTaskTracker task_tracker_;
+  base::WeakPtrFactory<FaviconFetcher> weak_factory_{this};
 };
 
 #endif  // CHROME_BROWSER_SUPERVISED_USER_ANDROID_FAVICON_CALLER_H_
diff --git a/chrome/browser/supervised_user/android/favicon_fetcher_unittest.cc b/chrome/browser/supervised_user/android/favicon_fetcher_unittest.cc
new file mode 100644
index 0000000..6f033079
--- /dev/null
+++ b/chrome/browser/supervised_user/android/favicon_fetcher_unittest.cc
@@ -0,0 +1,265 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/supervised_user/android/favicon_fetcher.h"
+#include <cstddef>
+#include <string>
+#include <utility>
+
+#include "base/android/scoped_java_ref.h"
+#include "base/memory/raw_ptr.h"
+#include "base/no_destructor.h"
+#include "base/task/cancelable_task_tracker.h"
+#include "base/test/gmock_callback_support.h"
+#include "components/favicon/core/large_icon_service.h"
+#include "components/favicon_base/favicon_callback.h"
+#include "components/favicon_base/favicon_types.h"
+#include "favicon_fetcher.h"
+#include "net/traffic_annotation/network_traffic_annotation.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/gfx/image/image.h"
+#include "ui/gfx/image/image_unittest_util.h"
+#include "url/gurl.h"
+
+namespace {
+
+const GURL& StringToGURL(std::string uri) {
+  static const base::NoDestructor<GURL> url(uri);
+  return *url;
+}
+const base::CancelableTaskTracker::TaskId kTaskId = 1;
+
+favicon_base::LargeIconImageResult CreateEmptyTestImageResult() {
+  SkBitmap bitmap_result = SkBitmap();
+  return favicon_base::LargeIconImageResult(
+      gfx::Image::CreateFrom1xBitmap(bitmap_result), StringToGURL("icon.com"));
+}
+
+favicon_base::LargeIconImageResult CreateTestImageResult() {
+  return favicon_base::LargeIconImageResult(
+      gfx::Image::CreateFrom1xBitmap(gfx::test::CreateBitmap(10, 10)),
+      StringToGURL("icon.com"));
+}
+
+class MockLargeIconService : public favicon::LargeIconService {
+ public:
+  MockLargeIconService() = default;
+  MockLargeIconService(const MockLargeIconService&) = delete;
+  MockLargeIconService& operator=(const MockLargeIconService&) = delete;
+  ~MockLargeIconService() override = default;
+
+  // LargeIconService overrides.
+  MOCK_METHOD5(GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache,
+               void(const GURL& page_url,
+                    bool may_page_url_be_private,
+                    bool should_trim_page_url_path,
+                    const net::NetworkTrafficAnnotationTag& traffic_annotation,
+                    favicon_base::GoogleFaviconServerCallback callback));
+  MOCK_METHOD5(GetLargeIconRawBitmapOrFallbackStyleForPageUrl,
+               base::CancelableTaskTracker::TaskId(
+                   const GURL& page_url,
+                   int min_source_size_in_pixel,
+                   int desired_size_in_pixel,
+                   favicon_base::LargeIconCallback callback,
+                   base::CancelableTaskTracker* tracker));
+  MOCK_METHOD5(GetLargeIconImageOrFallbackStyleForPageUrl,
+               base::CancelableTaskTracker::TaskId(
+                   const GURL& page_url,
+                   int min_source_size_in_pixel,
+                   int desired_size_in_pixel,
+                   favicon_base::LargeIconImageCallback callback,
+                   base::CancelableTaskTracker* tracker));
+  MOCK_METHOD5(GetLargeIconRawBitmapOrFallbackStyleForIconUrl,
+               base::CancelableTaskTracker::TaskId(
+                   const GURL& icon_url,
+                   int min_source_size_in_pixel,
+                   int desired_size_in_pixel,
+                   favicon_base::LargeIconCallback callback,
+                   base::CancelableTaskTracker* tracker));
+  MOCK_METHOD4(GetIconRawBitmapOrFallbackStyleForPageUrl,
+               base::CancelableTaskTracker::TaskId(
+                   const GURL& page_url,
+                   int desired_size_in_pixel,
+                   favicon_base::LargeIconCallback callback,
+                   base::CancelableTaskTracker* tracker));
+  MOCK_METHOD1(TouchIconFromGoogleServer, void(const GURL& icon_url));
+};
+
+// FaviconFetcher is the class under test, however we need to mock some of its
+// methods.
+class MockFaviconFetcher : public ::FaviconFetcher {
+ public:
+  explicit MockFaviconFetcher(
+      raw_ptr<favicon::LargeIconService> large_icon_service)
+      : FaviconFetcher(large_icon_service) {}
+
+  MOCK_METHOD2(ExecuteFaviconCallback,
+               void(const base::android::ScopedJavaGlobalRef<jobject>& callback,
+                    SkBitmap bitmap));
+};
+
+class FaviconFetcherTest : public ::testing::Test {
+ public:
+  FaviconFetcherTest() = default;
+  FaviconFetcherTest(const FaviconFetcherTest&) = delete;
+  FaviconFetcherTest& operator=(const FaviconFetcherTest&) = delete;
+
+ protected:
+  MockLargeIconService mock_large_icon_service_;
+  MockFaviconFetcher* favicon_fetcher_ =
+      new MockFaviconFetcher(&mock_large_icon_service_);
+};
+
+// Checks that an image was successfully returned from the server
+// after an image fetch request. Checks that the image is returned to the
+// caller and the fetcher object is successfully destroyed.
+TEST_F(FaviconFetcherTest, SucessfullImageRequestSuccessfulImageFetch) {
+  // Successful image request from server.
+  EXPECT_CALL(mock_large_icon_service_,
+              GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache(
+                  testing::_, testing::_, testing::_, testing::_, testing::_))
+      .Times(1)
+      .WillOnce(base::test::RunOnceCallback<4>(
+          favicon_base::GoogleFaviconServerRequestStatus::SUCCESS));
+
+  // Returns an empty image at first, then a valid image (after requesting it
+  // from server).
+  EXPECT_CALL(mock_large_icon_service_,
+              GetLargeIconImageOrFallbackStyleForPageUrl(
+                  testing::_, testing::_, testing::_, testing::_, testing::_))
+      .Times(2)
+      .WillOnce([=](auto, auto, auto,
+                    favicon_base::LargeIconImageCallback image_callback, auto) {
+        std::move(image_callback).Run(CreateEmptyTestImageResult());
+        return kTaskId;
+      })
+      .WillOnce([=](auto, auto, auto,
+                    favicon_base::LargeIconImageCallback image_callback, auto) {
+        std::move(image_callback).Run(CreateTestImageResult());
+        return kTaskId;
+      });
+
+  // Tests that favicon is returned to the caller (Android callback execution).
+  EXPECT_CALL(*favicon_fetcher_, ExecuteFaviconCallback(testing::_, testing::_))
+      .Times(1);
+
+  base::WeakPtr<FaviconFetcher> faviconFetcherWeakPtr =
+      favicon_fetcher_->GetWeakPtr();
+  favicon_fetcher_->FetchFavicon(StringToGURL("page.com"), true, 16, 32,
+                                 base::android::ScopedJavaGlobalRef<jobject>());
+
+  // Tests that the favicon_fetcher_ instance test is destroyed.
+  EXPECT_TRUE(faviconFetcherWeakPtr.WasInvalidated());
+}
+
+// Checks that an image that does not meet our specs is returned from the server
+// after an image fetch request. Checks that no image is returned to the
+// caller and the fetcher object is successfully destroyed.
+TEST_F(FaviconFetcherTest, SucessfullImageRequestUnsuccessfulImageFetch) {
+  // Successful image request from server.
+  EXPECT_CALL(mock_large_icon_service_,
+              GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache(
+                  testing::_, testing::_, testing::_, testing::_, testing::_))
+      .Times(1)
+      .WillOnce(base::test::RunOnceCallback<4>(
+          favicon_base::GoogleFaviconServerRequestStatus::SUCCESS));
+
+  // Returns an empty image twice (when image does not comply to our specs).
+  EXPECT_CALL(mock_large_icon_service_,
+              GetLargeIconImageOrFallbackStyleForPageUrl(
+                  testing::_, testing::_, testing::_, testing::_, testing::_))
+      .Times(2)
+      .WillRepeatedly([=](auto, auto, auto,
+                          favicon_base::LargeIconImageCallback image_callback,
+                          auto) {
+        std::move(image_callback).Run(CreateEmptyTestImageResult());
+        return kTaskId;
+      });
+
+  // No favicon is returned to the caller.
+  EXPECT_CALL(*favicon_fetcher_, ExecuteFaviconCallback(testing::_, testing::_))
+      .Times(0);
+
+  base::WeakPtr<FaviconFetcher> faviconFetcherWeakPtr =
+      favicon_fetcher_->GetWeakPtr();
+  favicon_fetcher_->FetchFavicon(StringToGURL("page.com"), true, 16, 32,
+                                 base::android::ScopedJavaGlobalRef<jobject>());
+
+  // Tests that the favicon_fetcher_ instance test is destroyed.
+  EXPECT_TRUE(faviconFetcherWeakPtr.WasInvalidated());
+}
+
+// Checks that an image is successfully returned from the cache without
+// making a request to retrieve it from the server. Checks that the image is
+// returned to the caller and the fetcher object is successfully destroyed.
+TEST_F(FaviconFetcherTest, SuccessfullImageFetchFromCache) {
+  // Returns a valid image (already cached).
+  EXPECT_CALL(mock_large_icon_service_,
+              GetLargeIconImageOrFallbackStyleForPageUrl(
+                  testing::_, testing::_, testing::_, testing::_, testing::_))
+      .Times(1)
+      .WillOnce([=](auto, auto, auto,
+                    favicon_base::LargeIconImageCallback image_callback, auto) {
+        std::move(image_callback).Run(CreateTestImageResult());
+        return kTaskId;
+      });
+
+  // Tests that favicon is returned to the caller (Android callback execution).
+  EXPECT_CALL(*favicon_fetcher_, ExecuteFaviconCallback(testing::_, testing::_))
+      .Times(1);
+
+  // No server request is done when image exists in cache.
+  EXPECT_CALL(mock_large_icon_service_,
+              GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache(
+                  testing::_, testing::_, testing::_, testing::_, testing::_))
+      .Times(0);
+
+  base::WeakPtr<FaviconFetcher> faviconFetcherWeakPtr =
+      favicon_fetcher_->GetWeakPtr();
+  favicon_fetcher_->FetchFavicon(StringToGURL("page.com"), true, 16, 32,
+                                 base::android::ScopedJavaGlobalRef<jobject>());
+
+  // Tests that the favicon_fetcher_ instance test is destroyed.
+  EXPECT_TRUE(faviconFetcherWeakPtr.WasInvalidated());
+}
+
+// Checks that no image is successfuly returned from the server after requesting
+// it. Checks that no image is returned to the caller and the fetcher object is
+// successfully destroyed.
+TEST_F(FaviconFetcherTest, UnuccessfullImageRequest) {
+  // Unsuccessful image request from server.
+  EXPECT_CALL(mock_large_icon_service_,
+              GetLargeIconOrFallbackStyleFromGoogleServerSkippingLocalCache(
+                  testing::_, testing::_, testing::_, testing::_, testing::_))
+      .Times(1)
+      .WillOnce(base::test::RunOnceCallback<4>(
+          favicon_base::GoogleFaviconServerRequestStatus::FAILURE_HTTP_ERROR));
+
+  // Returns an empty image.
+  EXPECT_CALL(mock_large_icon_service_,
+              GetLargeIconImageOrFallbackStyleForPageUrl(
+                  testing::_, testing::_, testing::_, testing::_, testing::_))
+      .Times(1)
+      .WillOnce([=](auto, auto, auto,
+                    favicon_base::LargeIconImageCallback image_callback, auto) {
+        std::move(image_callback).Run(CreateEmptyTestImageResult());
+        return kTaskId;
+      });
+
+  // Nothing is returned to the caller.
+  EXPECT_CALL(*favicon_fetcher_, ExecuteFaviconCallback(testing::_, testing::_))
+      .Times(0);
+
+  base::WeakPtr<FaviconFetcher> faviconFetcherWeakPtr =
+      favicon_fetcher_->GetWeakPtr();
+  favicon_fetcher_->FetchFavicon(StringToGURL("page.com"), true, 16, 32,
+                                 base::android::ScopedJavaGlobalRef<jobject>());
+
+  // Tests that the favicon_fetcher_ instance test is destroyed.
+  EXPECT_TRUE(faviconFetcherWeakPtr.WasInvalidated());
+}
+
+}  // namespace
diff --git a/chrome/browser/supervised_user/android/website_parent_approval.cc b/chrome/browser/supervised_user/android/website_parent_approval.cc
index 5d4f6b7..8484b19 100644
--- a/chrome/browser/supervised_user/android/website_parent_approval.cc
+++ b/chrome/browser/supervised_user/android/website_parent_approval.cc
@@ -13,6 +13,7 @@
 #include "base/android/scoped_java_ref.h"
 #include "base/callback.h"
 #include "base/no_destructor.h"
+#include "chrome/browser/favicon/large_icon_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/supervised_user/android/favicon_fetcher.h"
@@ -75,9 +76,10 @@
   GURL url = *(url::GURLAndroid::ToNativeGURL(env, j_url));
 
   FaviconFetcher* faviconFetcher =
-      new FaviconFetcher(ProfileManager::GetActiveUserProfile());
+      new FaviconFetcher(LargeIconServiceFactory::GetForBrowserContext(
+          ProfileManager::GetActiveUserProfile()));
 
   faviconFetcher->FetchFavicon(
       url, true, min_source_size_in_pixel, desired_size_in_pixel,
       base::android::ScopedJavaGlobalRef(on_favicon_fetched_callback));
-}
\ No newline at end of file
+}
diff --git a/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc b/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc
index a12ee1c..25ad5c7 100644
--- a/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_nigori_sync_test.cc
@@ -1443,8 +1443,9 @@
   // server.
 }
 
-IN_PROC_BROWSER_TEST_F(SingleClientNigoriWithWebApiTest,
-                       ShouldDeferAddingTrustedVaultRecoverabilityMethod) {
+IN_PROC_BROWSER_TEST_F(
+    SingleClientNigoriWithWebApiTest,
+    ShouldDeferAddingTrustedVaultRecoverabilityMethodUntilSignIn) {
   const int kTestMethodTypeHint = 8;
 
   // Mimic the account being already using a trusted vault passphrase.
@@ -1486,6 +1487,55 @@
 
 IN_PROC_BROWSER_TEST_F(
     SingleClientNigoriWithWebApiTest,
+    ShouldDeferAddingTrustedVaultRecoverabilityMethodUntilAuthErrorFixed) {
+  const int kTestMethodTypeHint = 8;
+
+  // Mimic the account being already using a trusted vault passphrase.
+  const std::vector<uint8_t> trusted_vault_key =
+      GetSecurityDomainsServer()->RotateTrustedVaultKey(
+          /*last_trusted_vault_key=*/syncer::GetConstantTrustedVaultKey());
+  SetNigoriInFakeServer(BuildTrustedVaultNigoriSpecifics(
+                            /*trusted_vault_keys=*/{trusted_vault_key}),
+                        GetFakeServer());
+  ASSERT_TRUE(SetupClients());
+
+  // Mimic the key being available upon startup but recoverability degraded.
+  GetSecurityDomainsServer()->RequirePublicKeyToAvoidRecoverabilityDegraded(
+      kTestRecoveryMethodPublicKey);
+  GetSyncService(0)->AddTrustedVaultDecryptionKeysFromWeb(
+      kGaiaId, GetSecurityDomainsServer()->GetAllTrustedVaultKeys(),
+      /*last_key_version=*/GetSecurityDomainsServer()->GetCurrentEpoch());
+  ASSERT_TRUE(GetSecurityDomainsServer()->IsRecoverabilityDegraded());
+
+  // Sign in now and wait until sync initializes.
+  ASSERT_TRUE(SetupSync());
+
+  // Enter a persistent auth error state.
+  GetClient(0)->EnterSyncPausedStateForPrimaryAccount();
+  ASSERT_TRUE(GetSyncService(0)->GetAuthError().IsPersistentError());
+
+  // Mimic a recovery method being added during a persistent auth error, which
+  // should be deferred until the auth error is resolved.
+  base::RunLoop run_loop;
+  GetSyncService(0)->AddTrustedVaultRecoveryMethodFromWeb(
+      kGaiaId, kTestRecoveryMethodPublicKey, kTestMethodTypeHint,
+      run_loop.QuitClosure());
+
+  // Mimic the auth error state being resolved.
+  ASSERT_TRUE(GetSecurityDomainsServer()->IsRecoverabilityDegraded());
+  GetClient(0)->ExitSyncPausedStateForPrimaryAccount();
+
+  // Wait until AddTrustedVaultRecoveryMethodFromWeb() completes.
+  run_loop.Run();
+
+  EXPECT_TRUE(TrustedVaultRecoverabilityDegradedStateChecker(GetSyncService(0),
+                                                             /*degraded=*/false)
+                  .Wait());
+  EXPECT_FALSE(GetSecurityDomainsServer()->IsRecoverabilityDegraded());
+}
+
+IN_PROC_BROWSER_TEST_F(
+    SingleClientNigoriWithWebApiTest,
     ShouldReportDegradedTrustedVaultRecoverabilityUponResolvedAuthError) {
   // Mimic the key being available upon startup and recoverability good (not
   // degraded).
diff --git a/chrome/browser/sync/test/integration/two_client_sessions_sync_test.cc b/chrome/browser/sync/test/integration/two_client_sessions_sync_test.cc
index c65e4b9..6f5aa49e 100644
--- a/chrome/browser/sync/test/integration/two_client_sessions_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_sessions_sync_test.cc
@@ -266,63 +266,4 @@
       WaitForForeignSessionsToSync(/*local_index=*/0, /*non_local_index=*/1));
 }
 
-#if !BUILDFLAG(IS_CHROMEOS)
-class TwoClientSessionsWithDestroyProfileSyncTest
-    : public TwoClientSessionsSyncTest {
- public:
-  TwoClientSessionsWithDestroyProfileSyncTest() {
-    features_.InitAndEnableFeature(features::kDestroyProfileOnBrowserClose);
-  }
-
- private:
-  base::test::ScopedFeatureList features_;
-};
-
-IN_PROC_BROWSER_TEST_F(TwoClientSessionsWithDestroyProfileSyncTest,
-                       ShouldNotSyncLastClosedTab) {
-  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-
-  ASSERT_TRUE(CheckInitialState(0));
-  ASSERT_TRUE(CheckInitialState(1));
-
-  ASSERT_TRUE(OpenMultipleTabs(0, {GURL(kURL1), GURL(kURL2)}));
-
-  ASSERT_TRUE(
-      WaitForForeignSessionsToSync(/*local_index=*/0, /*non_local_index=*/1));
-
-  // Close all tabs and wait for syncing.
-  CloseTab(/*browser_index=*/0, /*tab_index=*/0);
-  ASSERT_TRUE(
-      WaitForForeignSessionsToSync(/*local_index=*/0, /*non_local_index=*/1));
-
-  ScopedWindowMap local_map_before_closing;
-  ASSERT_TRUE(GetLocalWindows(/*browser_index=*/0, &local_map_before_closing));
-
-  {
-    // Closing the last tab results in profile destruction and hence may require
-    // running blocking tasks which are normally disallowed during tests.
-    // TODO(crbug.com/1334091): remove once it's clear why it results in
-    // blocking tasks.
-    base::ScopedAllowUnresponsiveTasksForTesting scoped_allow_sync_primitives;
-    CloseTab(/*browser_index=*/0, /*tab_index=*/0);
-
-    // TODO(crbug.com/1039234): When DestroyProfileOnBrowserClose is enabled,
-    // the last CloseTab() triggers Profile deletion (and SyncService deletion).
-    // This means the last tab close never gets synced. We should fix this
-    // regression eventually. Once that's done, merge this test with the
-    // WithoutDestroyProfile version.
-    base::RunLoop run_loop;
-    base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-        FROM_HERE, run_loop.QuitClosure(), TestTimeouts::action_timeout());
-    run_loop.Run();
-  }
-
-  SyncedSessionVector sessions;
-  ASSERT_TRUE(GetSessionData(/*browser_index=*/1, &sessions));
-  ASSERT_EQ(1u, sessions.size());
-  ASSERT_TRUE(
-      WindowsMatch(local_map_before_closing, sessions.front()->windows));
-}
-#endif  // !BUILDFLAG(IS_CHROMEOS)
-
 }  // namespace
diff --git a/chrome/browser/task_manager/mock_web_contents_task_manager.cc b/chrome/browser/task_manager/mock_web_contents_task_manager.cc
index bfcc751..b537f6c 100644
--- a/chrome/browser/task_manager/mock_web_contents_task_manager.cc
+++ b/chrome/browser/task_manager/mock_web_contents_task_manager.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/task_manager/mock_web_contents_task_manager.h"
 
 #include "base/containers/contains.h"
+#include "base/ranges/algorithm.h"
 #include "build/build_config.h"
 
 namespace task_manager {
@@ -21,8 +22,9 @@
 
 void MockWebContentsTaskManager::TaskRemoved(Task* task) {
   DCHECK(task);
-  DCHECK(base::Contains(tasks_, task));
-  tasks_.erase(std::find(tasks_.begin(), tasks_.end(), task));
+  const auto it = base::ranges::find(tasks_, task);
+  DCHECK(it != tasks_.end());
+  tasks_.erase(it);
 }
 
 void MockWebContentsTaskManager::StartObserving() {
diff --git a/chrome/browser/task_manager/providers/crosapi/task_manager_controller_lacros.cc b/chrome/browser/task_manager/providers/crosapi/task_manager_controller_lacros.cc
index 3a056d42..2e4cb90 100644
--- a/chrome/browser/task_manager/providers/crosapi/task_manager_controller_lacros.cc
+++ b/chrome/browser/task_manager/providers/crosapi/task_manager_controller_lacros.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/task_manager/providers/crosapi/task_manager_controller_lacros.h"
 
+#include "base/containers/contains.h"
 #include "base/guid.h"
 #include "base/time/time.h"
 #include "chrome/browser/task_manager/task_manager_interface.h"
@@ -145,9 +146,7 @@
       // from ash to remove a task after the task has been removed from lacros
       // task manager but before the cached |id_to_tasks_| is refreshed in
       // GetTaskManagerTasks() call.
-      const auto& task_ids = observed_task_manager()->GetTaskIdsList();
-      if (std::find(task_ids.begin(), task_ids.end(), task_id) !=
-          task_ids.end()) {
+      if (base::Contains(observed_task_manager()->GetTaskIdsList(), task_id)) {
         observed_task_manager()->ActivateTask(task_id);
       }
       return;
diff --git a/chrome/browser/task_manager/providers/web_contents/web_contents_tags_manager.cc b/chrome/browser/task_manager/providers/web_contents/web_contents_tags_manager.cc
index 360ba2b0..3b78411 100644
--- a/chrome/browser/task_manager/providers/web_contents/web_contents_tags_manager.cc
+++ b/chrome/browser/task_manager/providers/web_contents/web_contents_tags_manager.cc
@@ -4,9 +4,8 @@
 
 #include "chrome/browser/task_manager/providers/web_contents/web_contents_tags_manager.h"
 
-#include <algorithm>
-
 #include "base/memory/singleton.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/task_manager/providers/web_contents/web_contents_task_provider.h"
 
 namespace task_manager {
@@ -26,9 +25,7 @@
 
 void WebContentsTagsManager::RemoveTag(WebContentsTag* tag) {
   DCHECK(tag);
-  tracked_tags_.erase(std::find(tracked_tags_.begin(),
-                                tracked_tags_.end(),
-                                tag));
+  tracked_tags_.erase(base::ranges::find(tracked_tags_, tag));
 
   // No need to inform the provider here. The provider will create an entry
   // for each WebContents it's tracking which is a WebContentsObserver and
diff --git a/chrome/browser/thumbnail/cc/thumbnail_cache.cc b/chrome/browser/thumbnail/cc/thumbnail_cache.cc
index a94f933..8784b0c 100644
--- a/chrome/browser/thumbnail/cc/thumbnail_cache.cc
+++ b/chrome/browser/thumbnail/cc/thumbnail_cache.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/thumbnail/cc/thumbnail_cache.h"
 
-#include <algorithm>
 #include <cmath>
 #include <utility>
 
@@ -18,6 +17,7 @@
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/metrics/field_trial_params.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/thread_pool.h"
 #include "base/time/time.h"
@@ -534,7 +534,7 @@
 }
 
 void ThumbnailCache::RemoveFromReadQueue(TabId tab_id) {
-  auto read_iter = std::find(read_queue_.begin(), read_queue_.end(), tab_id);
+  auto read_iter = base::ranges::find(read_queue_, tab_id);
   if (read_iter != read_queue_.end())
     read_queue_.erase(read_iter);
 }
@@ -922,7 +922,7 @@
                                   const gfx::Size& content_size) {
   read_in_progress_ = false;
 
-  auto iter = std::find(read_queue_.begin(), read_queue_.end(), tab_id);
+  auto iter = base::ranges::find(read_queue_, tab_id);
   if (iter == read_queue_.end()) {
     ReadNextThumbnail();
     return;
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
index c23d1c7d..782e8b21 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
@@ -679,4 +679,18 @@
         return isIncognito ? mSuggestionIncognitoBackgroundColor
                            : mSuggestionStandardBackgroundColor;
     }
+
+    /**
+     * Function used to position the url bar inside the location bar during omnibox animation.
+     *
+     * @param urlExpansionPercent The current expansion percent, 1 is fully focused and 0 is
+     *                            completely unfocused.
+     * @param isOnNtp True if tab mode is the NTP.
+     * @return The X translation for the URL bar, used in the toolbar animation.
+     */
+    public float getUrlBarTranslationXForToolbarAnimation(
+            float urlExpansionPercent, boolean isOnNtp) {
+        return mLocationBarMediator.getUrlBarTranslationXForToolbarAnimation(
+                urlExpansionPercent, isOnNtp);
+    }
 }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
index 184f699..db394ed 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
@@ -187,7 +187,10 @@
                     MarginLayoutParamsCompat.getMarginStart(urlActionContainerLayoutParams)
                     + MarginLayoutParamsCompat.getMarginEnd(urlActionContainerLayoutParams);
         }
-        urlContainerMarginEnd += mStatusCoordinator.getAdditionalUrlContainerMarginEnd();
+        urlContainerMarginEnd += mStatusCoordinator.isSearchEngineStatusIconVisible()
+                        && mStatusCoordinator.shouldDisplaySearchEngineIcon()
+                ? getEndPaddingPixelSizeOnFocusDelta()
+                : 0;
         // Account for the URL action container end padding on tablets.
         if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(getContext())) {
             urlContainerMarginEnd +=
@@ -298,5 +301,11 @@
         mUrlActionContainer.setVisibility(visibility);
     }
 
+    /** Returns the increase in StatusView end padding, when the Url bar is focused. */
+    public int getEndPaddingPixelSizeOnFocusDelta() {
+        return getResources().getDimensionPixelSize(R.dimen.location_bar_icon_end_padding_focused)
+                - getResources().getDimensionPixelSize(R.dimen.location_bar_icon_end_padding);
+    }
+
     public void notifyVoiceRecognitionCanceled() {}
 }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
index 8c37841..e3c79ff 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -1182,6 +1182,42 @@
         }
     }
 
+    float getUrlBarTranslationXForToolbarAnimation(float urlExpansionPercent, boolean isOnNtp) {
+        // No offset is required if we are not showing the SE logo.
+        if (!mSearchEngineLogoUtils.shouldShowSearchEngineLogo(
+                    mLocationBarDataProvider.isIncognito())) {
+            return 0;
+        }
+
+        boolean isRtl = mLocationBarLayout.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
+        // The calculation here is: the difference in padding between the focused vs unfocused
+        // states and also accounts for the translation that the status icon will do. In the end,
+        // this translation will be the distance that the url bar needs to travel to arrive at the
+        // desired padding when focused.
+        float translation =
+                urlExpansionPercent * mLocationBarLayout.getEndPaddingPixelSizeOnFocusDelta();
+
+        boolean scrollingOnNtp =
+                !mUrlHasFocus && mStatusCoordinator.isSearchEngineStatusIconVisible() && isOnNtp;
+        if (scrollingOnNtp) {
+            // When:
+            // 1. unfocusing the LocationBar on the NTP.
+            // 2. scrolling the fakebox to the LocationBar on the NTP.
+            // The status icon and the URL bar text overlap in the animation.
+            //
+            // This branch calculates the negative distance the URL bar needs to travel to
+            // completely overlap the status icon and end up in a state that matches the fakebox.
+            translation -= (1f - urlExpansionPercent)
+                    * (mStatusCoordinator.getStatusIconWidth()
+                            - mLocationBarLayout.getEndPaddingPixelSizeOnFocusDelta());
+        }
+        // For LTR, the value is negative because the status icon is left of the url bar on the
+        // x/y plane.
+        // For RTL, the value is positive because the status icon is right of the url bar on the
+        // x/y plane.
+        return isRtl ? -translation : translation;
+    }
+
     // LocationBarData.Observer implementation
     // Using the default empty onSecurityStateChanged.
     // Using the default empty onTitleChanged.
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java
index 96b7568..017982a 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusCoordinator.java
@@ -208,6 +208,11 @@
         return mStatusView.isSearchEngineStatusIconVisible();
     }
 
+    /** Returns {@code true} if the search engine icon is  currently being displayed. */
+    public boolean shouldDisplaySearchEngineIcon() {
+        return mMediator.shouldDisplaySearchEngineIcon();
+    }
+
     /** Returns the ID of the drawable currently shown in the security icon. */
     @DrawableRes
     public int getSecurityIconResourceIdForTesting() {
@@ -277,11 +282,6 @@
         return mStatusView.getMeasuredWidth();
     }
 
-    /** Returns the increase in StatusView end padding, when the Url bar is focused. */
-    public int getEndPaddingPixelSizeOnFocusDelta() {
-        return mMediator.getEndPaddingPixelSizeOnFocusDelta();
-    }
-
     /**
      * Notifies StatusCoordinator that the default match for the currently entered autocomplete text
      * has been classified, indicating whether the default match is a search.
@@ -292,13 +292,6 @@
         mMediator.updateLocationBarIconForDefaultMatchCategory(defaultMatchIsSearch);
     }
 
-    /** Returns the additional end margin for the url container. */
-    public int getAdditionalUrlContainerMarginEnd() {
-        return mMediator.shouldDisplaySearchEngineIcon() && isSearchEngineStatusIconVisible()
-                ? getEndPaddingPixelSizeOnFocusDelta()
-                : 0;
-    }
-
     public void destroy() {
         mMediator.destroy();
         mLocationBarDataProvider.removeObserver(this);
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
index df25526..fb7db704 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
@@ -161,12 +161,13 @@
         mWindowAndroid = windowAndroid;
         mMerchantTrustSignalsCoordinatorSupplier = merchantTrustSignalsCoordinatorSupplier;
 
+        // TODO(crbug.com/1369345): Figure out how to remove the usage of
+        // mEndPaddingPixelSizeOnFocusDelta.
         mEndPaddingPixelSizeOnFocusDelta =
                 mResources.getDimensionPixelSize(R.dimen.location_bar_icon_end_padding_focused)
                 - mResources.getDimensionPixelSize(R.dimen.location_bar_icon_end_padding);
         int iconWidth = resources.getDimensionPixelSize(R.dimen.location_bar_status_icon_width);
-        mTextOffsetThreshold =
-                (float) iconWidth / (iconWidth + getEndPaddingPixelSizeOnFocusDelta());
+        mTextOffsetThreshold = (float) iconWidth / (iconWidth + mEndPaddingPixelSizeOnFocusDelta);
         mTextOffsetAdjustedScale = mTextOffsetThreshold == 1 ? 1 : (1 - mTextOffsetThreshold);
 
         mIsTablet = isTablet;
@@ -255,13 +256,6 @@
     }
 
     /**
-     * Returns the increase in StatusView end padding, when the Url bar is focused.
-     */
-    int getEndPaddingPixelSizeOnFocusDelta() {
-        return mEndPaddingPixelSizeOnFocusDelta;
-    }
-
-    /**
      * Specify whether status icon should be shown when URL is focused.
      */
     @VisibleForTesting
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java
index 022fba86..e8f1bcd4 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java
@@ -98,7 +98,7 @@
     }
 
     /**
-     * @return Whether search engine status icon is visible.
+     * Return whether search engine status icon is visible.
      */
     public boolean isSearchEngineStatusIconVisible() {
         return mIconView.getVisibility() == VISIBLE;
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
index 72a719b..4176e7a2 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
@@ -1064,10 +1064,13 @@
 
         // When the dse icon is enabled, the UrlBar needs additional translation to compensate for
         // the additional translation applied to the LocationBar. See comments in
-        // LocationBar#getUrlBarTranslationXForToolbarAnimation() for implementation details.
+        // LocationBarCoordinator#getUrlBarTranslationXForToolbarAnimation() and
+        // LocationBarMediator#getUrlBarTranslationXForToolbarAnimation() for implementation
+        // details.
         if (SearchEngineLogoUtils.getInstance().shouldShowSearchEngineLogo(isIncognito)) {
-            mUrlBar.setTranslationX(
-                    getUrlBarTranslationXForToolbarAnimation(mUrlExpansionFraction, hasFocus()));
+            mUrlBar.setTranslationX(mLocationBar.getUrlBarTranslationXForToolbarAnimation(
+                    mUrlExpansionFraction,
+                    UrlUtilities.isCanonicalizedNTPUrl(getToolbarDataProvider().getCurrentUrl())));
         } else {
             mUrlBar.setTranslationX(0);
         }
@@ -2614,60 +2617,6 @@
         return mLocationBar.isLayoutRtl() ? offset : -offset;
     }
 
-    /**
-     * Function used to position the url bar inside the location bar during omnibox animation.
-     *
-     * @param urlExpansionPercent The current expansion percent, 1 is fully focused and 0 is
-     *                            completely unfocused.
-     * @param hasFocus True if the LocationBar has focus, this will be true between the focus
-     *                 animation starting and the unfocus animation starting.
-     * @return The X translation for the URL bar, used in the toolbar animation.
-     */
-    private float getUrlBarTranslationXForToolbarAnimation(
-            float urlExpansionPercent, boolean hasFocus) {
-        StatusCoordinator statusCoordinator = mLocationBar.getStatusCoordinator();
-        if (statusCoordinator == null) return 0;
-        SearchEngineLogoUtils searchEngineLogoUtils = SearchEngineLogoUtils.getInstance();
-        assert searchEngineLogoUtils != null;
-
-        // No offset is required if the experiment is disabled.
-        if (!searchEngineLogoUtils.shouldShowSearchEngineLogo(
-                    getToolbarDataProvider().isIncognito())) {
-            return 0;
-        }
-
-        boolean isRtl = mLocationBar.isLayoutRtl();
-        // The calculation here is: the difference in padding between the focused vs unfocused
-        // states and also accounts for the translation that the status icon will do. In the end,
-        // this translation will be the distance that the url bar needs to travel to arrive at the
-        // desired padding when focused.
-        float translation =
-                urlExpansionPercent * statusCoordinator.getEndPaddingPixelSizeOnFocusDelta();
-
-        boolean scrollingOnNtp = !hasFocus && statusCoordinator.isSearchEngineStatusIconVisible()
-                && UrlUtilities.isCanonicalizedNTPUrl(getToolbarDataProvider().getCurrentUrl());
-        if (scrollingOnNtp) {
-            // When:
-            // 1. unfocusing the LocationBar on the NTP.
-            // 2. scrolling the fakebox to the LocationBar on the NTP.
-            // The status icon and the URL bar text overlap in the animation.
-            //
-            // This branch calculates the negative distance the URL bar needs to travel to
-            // completely overlap the status icon and end up in a state that matches the fakebox.
-            float overStatusIconTranslation = translation
-                    - (1f - urlExpansionPercent)
-                            * (statusCoordinator.getStatusIconWidth()
-                                    - getAdditionalOffsetForNTP());
-            // For LTR, the value is negative because the status icon is left of the url bar on the
-            // x/y plane.
-            // For RTL, the value is positive because the status icon is right of the url bar on the
-            // x/y plane.
-            return isRtl ? -overStatusIconTranslation : overStatusIconTranslation;
-        }
-
-        return isRtl ? -translation : translation;
-    }
-
     private int getAdditionalOffsetForNTP() {
         return getResources().getDimensionPixelSize(R.dimen.location_bar_lateral_padding)
                 - getResources().getDimensionPixelSize(R.dimen.fake_search_box_lateral_padding);
diff --git a/chrome/browser/ui/app_list/chrome_app_list_model_updater_browsertest.cc b/chrome/browser/ui/app_list/chrome_app_list_model_updater_browsertest.cc
index 2503e394..c82c724 100644
--- a/chrome/browser/ui/app_list/chrome_app_list_model_updater_browsertest.cc
+++ b/chrome/browser/ui/app_list/chrome_app_list_model_updater_browsertest.cc
@@ -8,15 +8,12 @@
 
 #include "ash/app_list/model/app_list_item.h"
 #include "ash/app_list/model/app_list_model.h"
-#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/accelerators.h"
-#include "ash/public/cpp/pagination/pagination_model.h"
 #include "ash/public/cpp/shelf_model.h"
 #include "ash/public/cpp/test/app_list_test_api.h"
 #include "base/files/file_util.h"
 #include "base/path_service.h"
 #include "base/run_loop.h"
-#include "base/test/scoped_feature_list.h"
 #include "chrome/browser/apps/app_service/app_service_proxy.h"
 #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
 #include "chrome/browser/ash/login/login_manager_test.h"
@@ -35,7 +32,6 @@
 #include "chrome/browser/web_applications/web_app_install_info.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_switches.h"
 #include "chrome/test/base/interactive_test_utils.h"
 #include "components/account_id/account_id.h"
 #include "components/app_constants/constants.h"
@@ -99,19 +95,14 @@
   ash::LoginManagerMixin login_mixin_{&mixin_host_};
 };
 
-class ChromeAppListModelUpdaterTestBase
-    : public extensions::ExtensionBrowserTest {
+class ChromeAppListModelUpdaterTest : public extensions::ExtensionBrowserTest {
  public:
-  explicit ChromeAppListModelUpdaterTestBase(
-      bool enable_productivity_launcher) {
-    feature_list_.InitWithFeatureState(ash::features::kProductivityLauncher,
-                                       enable_productivity_launcher);
-  }
-  ~ChromeAppListModelUpdaterTestBase() override = default;
-  ChromeAppListModelUpdaterTestBase(
-      const ChromeAppListModelUpdaterTestBase& other) = delete;
-  ChromeAppListModelUpdaterTestBase& operator=(
-      const ChromeAppListModelUpdaterTestBase& other) = delete;
+  ChromeAppListModelUpdaterTest() = default;
+  ~ChromeAppListModelUpdaterTest() override = default;
+  ChromeAppListModelUpdaterTest(const ChromeAppListModelUpdaterTest& other) =
+      delete;
+  ChromeAppListModelUpdaterTest& operator=(
+      const ChromeAppListModelUpdaterTest& other) = delete;
 
  protected:
   void SetUpOnMainThread() override {
@@ -127,39 +118,11 @@
   void ShowAppList() {
     ash::AcceleratorController::Get()->PerformActionIfEnabled(
         ash::TOGGLE_APP_LIST, {});
-    if (ash::features::IsProductivityLauncherEnabled()) {
-      app_list_test_api_.WaitForBubbleWindow(
-          /*wait_for_opening_animation=*/false);
-    }
+    app_list_test_api_.WaitForBubbleWindow(
+        /*wait_for_opening_animation=*/false);
   }
 
   ash::AppListTestApi app_list_test_api_;
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
-// Parameterized by whether productivity launcher is enabled,
-class ChromeAppListModelUpdaterTest
-    : public ChromeAppListModelUpdaterTestBase,
-      public ::testing::WithParamInterface<bool> {
- public:
-  ChromeAppListModelUpdaterTest()
-      : ChromeAppListModelUpdaterTestBase(
-            /*enable_productivity_launcher=*/GetParam()) {}
-  ~ChromeAppListModelUpdaterTest() override = default;
-};
-
-INSTANTIATE_TEST_SUITE_P(ProductivityLauncher,
-                         ChromeAppListModelUpdaterTest,
-                         ::testing::Bool());
-
-class ChromeAppListModelUpdaterProductivityLauncherTest
-    : public ChromeAppListModelUpdaterTestBase {
- public:
-  ChromeAppListModelUpdaterProductivityLauncherTest()
-      : ChromeAppListModelUpdaterTestBase(
-            /*enable_productivity_launcher=*/true) {}
 };
 
 // Tests that an Oem app and its folder are created with valid positions after
@@ -185,7 +148,7 @@
   EXPECT_TRUE(oem_folder->position().IsValid());
 }
 
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        GetPositionBeforeFirstItemTest) {
   AppListClientImpl* client = AppListClientImpl::GetInstance();
   ASSERT_TRUE(client);
@@ -226,7 +189,7 @@
   }
 }
 
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        PRE_ReorderAppPositionInTopLevelAppList) {
   const std::string app1_id =
       LoadExtension(test_data_dir_.AppendASCII("app1"))->id();
@@ -251,15 +214,9 @@
   // |top_level_id_list| size here.
   ASSERT_GE(top_level_id_list_size, 3u);
 
-  if (ash::features::IsProductivityLauncherEnabled()) {
-    ASSERT_EQ(top_level_id_list[2], app1_id);
-    ASSERT_EQ(top_level_id_list[1], app2_id);
-    ASSERT_EQ(top_level_id_list[0], app3_id);
-  } else {
-    ASSERT_EQ(top_level_id_list[top_level_id_list_size - 3], app1_id);
-    ASSERT_EQ(top_level_id_list[top_level_id_list_size - 2], app2_id);
-    ASSERT_EQ(top_level_id_list[top_level_id_list_size - 1], app3_id);
-  }
+  ASSERT_EQ(top_level_id_list[2], app1_id);
+  ASSERT_EQ(top_level_id_list[1], app2_id);
+  ASSERT_EQ(top_level_id_list[0], app3_id);
 
   // After the move operation, app3 should be at index 0 and app1 should be at
   // index 1. App2 stays at the last position in the item list.
@@ -272,16 +229,12 @@
   EXPECT_EQ(top_level_id_list_size, reordered_top_level_id_list.size());
   EXPECT_EQ(reordered_top_level_id_list[0], app3_id);
   EXPECT_EQ(reordered_top_level_id_list[1], app1_id);
-  if (ash::features::IsProductivityLauncherEnabled()) {
-    EXPECT_EQ(reordered_top_level_id_list[2], app2_id);
-  } else {
-    EXPECT_EQ(reordered_top_level_id_list.back(), app2_id);
-  }
+  EXPECT_EQ(reordered_top_level_id_list[2], app2_id);
 }
 
 // Tests if the app position changed in the top level persist after the system
 // restarts.
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        ReorderAppPositionInTopLevelAppList) {
   // Create the app list view and show the apps grid.
   ShowAppList();
@@ -308,14 +261,10 @@
 
   EXPECT_EQ(reordered_top_level_id_list[0], app3_id);
   EXPECT_EQ(reordered_top_level_id_list[1], app1_id);
-  if (ash::features::IsProductivityLauncherEnabled()) {
-    ASSERT_EQ(reordered_top_level_id_list[2], app2_id);
-  } else {
-    EXPECT_EQ(reordered_top_level_id_list.back(), app2_id);
-  }
+  EXPECT_EQ(reordered_top_level_id_list[2], app2_id);
 }
 
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        PRE_ReorderAppPositionInFolder) {
   const std::string app1_id =
       LoadExtension(test_data_dir_.AppendASCII("app1"))->id();
@@ -348,7 +297,7 @@
 
 // Tests if the app position changed in a folder persist after the system
 // restarts.
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        ReorderAppPositionInFolder) {
   const std::string app1_id =
       GetExtensionByPath(extension_registry()->enabled_extensions(),
@@ -373,7 +322,7 @@
   EXPECT_EQ(app_list_test_api_.GetAppIdsInFolder(folder_id), reordered_id_list);
 }
 
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        PRE_UnmergeTwoItemFolder) {
   const std::string app1_id =
       LoadExtension(test_data_dir_.AppendASCII("app1"))->id();
@@ -404,49 +353,30 @@
   ash::AppListItem* app3_item = model->FindItem(app3_id);
   ASSERT_TRUE(app3_item);
 
-  if (ash::features::IsProductivityLauncherEnabled()) {
-    model->MoveItemToRootAt(app2_item, app3_item->position().CreateBefore());
-  } else {
-    model->MoveItemToRootAt(app2_item, app3_item->position().CreateAfter());
-  }
+  model->MoveItemToRootAt(app2_item, app3_item->position().CreateBefore());
 
   // Get last 3 items (the grid may have default items, in addition to the ones
   // installed by the test).
   std::vector<std::string> top_level_id_list =
       app_list_test_api_.GetTopLevelViewIdList();
   ASSERT_GT(top_level_id_list.size(), 2u);
-  if (ash::features::IsProductivityLauncherEnabled()) {
-    EXPECT_TRUE(base::Contains(top_level_id_list, folder_id));
-    model->MoveItemToRootAt(app1_item, app2_item->position().CreateBefore());
+  EXPECT_TRUE(base::Contains(top_level_id_list, folder_id));
+  model->MoveItemToRootAt(app1_item, app2_item->position().CreateBefore());
 
-    top_level_id_list = app_list_test_api_.GetTopLevelViewIdList();
-    EXPECT_FALSE(base::Contains(top_level_id_list, folder_id));
-  } else {
-    EXPECT_FALSE(base::Contains(top_level_id_list, folder_id));
-  }
+  top_level_id_list = app_list_test_api_.GetTopLevelViewIdList();
+  EXPECT_FALSE(base::Contains(top_level_id_list, folder_id));
 
-  if (ash::features::IsProductivityLauncherEnabled()) {
-    std::vector<std::string> leading_items = {
-        top_level_id_list[0],
-        top_level_id_list[1],
-        top_level_id_list[2],
-    };
+  std::vector<std::string> leading_items = {
+      top_level_id_list[0],
+      top_level_id_list[1],
+      top_level_id_list[2],
+  };
 
-    EXPECT_EQ(std::vector<std::string>({app1_id, app2_id, app3_id}),
-              leading_items);
-  } else {
-    std::vector<std::string> trailing_items = {
-        top_level_id_list[top_level_id_list.size() - 3],
-        top_level_id_list[top_level_id_list.size() - 2],
-        top_level_id_list[top_level_id_list.size() - 1],
-    };
-
-    EXPECT_EQ(std::vector<std::string>({app1_id, app3_id, app2_id}),
-              trailing_items);
-  }
+  EXPECT_EQ(std::vector<std::string>({app1_id, app2_id, app3_id}),
+            leading_items);
 }
 
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest, UnmergeTwoItemFolder) {
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest, UnmergeTwoItemFolder) {
   const std::string app1_id =
       GetExtensionByPath(extension_registry()->enabled_extensions(),
                          test_data_dir_.AppendASCII("app1"))
@@ -469,31 +399,20 @@
       app_list_test_api_.GetTopLevelViewIdList();
   ASSERT_GT(top_level_id_list.size(), 2u);
 
-  if (ash::features::IsProductivityLauncherEnabled()) {
-    std::vector<std::string> leading_items = {
-        top_level_id_list[0],
-        top_level_id_list[1],
-        top_level_id_list[2],
-    };
+  std::vector<std::string> leading_items = {
+      top_level_id_list[0],
+      top_level_id_list[1],
+      top_level_id_list[2],
+  };
 
-    EXPECT_EQ(std::vector<std::string>({app1_id, app2_id, app3_id}),
-              leading_items);
-  } else {
-    std::vector<std::string> trailing_items = {
-        top_level_id_list[top_level_id_list.size() - 3],
-        top_level_id_list[top_level_id_list.size() - 2],
-        top_level_id_list[top_level_id_list.size() - 1],
-    };
-
-    EXPECT_EQ(std::vector<std::string>({app1_id, app3_id, app2_id}),
-              trailing_items);
-  }
+  EXPECT_EQ(std::vector<std::string>({app1_id, app2_id, app3_id}),
+            leading_items);
 }
 
 // Tests that session restart before a default pinned preinstalled app is
 // correctly positioned in the app list if the session restarts before the app
 // installation completes.
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        PRE_SessionRestartDoesntOverrideDefaultAppListPosition) {
   // Simluate installation of an app pinned to shelf by default:
   // App with web_app::kGmailAppId ID.
@@ -511,7 +430,7 @@
             GetOrderedShelfItems(app_filter));
 }
 
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        SessionRestartDoesntOverrideDefaultAppListPosition) {
   app_list::AppListSyncableService* app_list_syncable_service =
       app_list::AppListSyncableServiceFactory::GetForProfile(profile());
@@ -556,7 +475,7 @@
       filtered_top_level_id_list);
 }
 
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        PRE_UserAppsInEphemeralFoldersMovedToRootAfterRestart) {
   // Install 2 apps.
   const std::string app1_id =
@@ -613,7 +532,7 @@
   EXPECT_EQ(app2_item->folder_id(), kEphemeralFolderId);
 }
 
-IN_PROC_BROWSER_TEST_P(ChromeAppListModelUpdaterTest,
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest,
                        UserAppsInEphemeralFoldersMovedToRootAfterRestart) {
   // Create the app list view and show the apps grid.
   ShowAppList();
@@ -643,8 +562,7 @@
   EXPECT_FALSE(app2_item->IsInFolder());
 }
 
-IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterProductivityLauncherTest,
-                       IsNewInstall) {
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest, IsNewInstall) {
   AppListClientImpl* client = AppListClientImpl::GetInstance();
   ASSERT_TRUE(client);
   AppListModelUpdater* model_updater = test::GetModelUpdater(client);
@@ -683,8 +601,7 @@
   EXPECT_TRUE(item2->CloneMetadata()->is_new_install);
 }
 
-IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterProductivityLauncherTest,
-                       IsNewInstallInFolder) {
+IN_PROC_BROWSER_TEST_F(ChromeAppListModelUpdaterTest, IsNewInstallInFolder) {
   AppListClientImpl* client = AppListClientImpl::GetInstance();
   ASSERT_TRUE(client);
   AppListModelUpdater* model_updater = test::GetModelUpdater(client);
diff --git a/chrome/browser/ui/ash/projector/projector_navigation_throttle_browsertest.cc b/chrome/browser/ui/ash/projector/projector_navigation_throttle_browsertest.cc
index e5d12dab..671df5d6 100644
--- a/chrome/browser/ui/ash/projector/projector_navigation_throttle_browsertest.cc
+++ b/chrome/browser/ui/ash/projector/projector_navigation_throttle_browsertest.cc
@@ -20,6 +20,7 @@
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_list.h"
 #include "chrome/browser/ui/browser_list_observer.h"
+#include "chrome/browser/ui/browser_navigator.h"
 #include "chrome/browser/ui/browser_navigator_params.h"
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/browser/web_applications/web_app_provider.h"
@@ -111,10 +112,8 @@
 // https://screencast.apps.chrome/xyz?resourceKey=abc redirects to
 // chrome://projector/app/xyz?timestamp=[timestamp]&resourceKey=abc and launches
 // the SWA.
-// TODO(crbug.com/1368850): Disabled due to constant failure with parameter 3, 4
-// and 5.
 IN_PROC_BROWSER_TEST_P(ProjectorNavigationThrottleTestParameterized,
-                       DISABLED_PwaNavigationRedirects) {
+                       PwaNavigationRedirects) {
   base::HistogramTester histogram_tester;
 
   std::string url = kChromeUIUntrustedProjectorPwaUrl;
@@ -132,7 +131,7 @@
     // Simulate the user clicking a link.
     NavigateParams params(browser(), gurl,
                           ui::PageTransition::PAGE_TRANSITION_LINK);
-    ui_test_utils::NavigateToURL(&params);
+    Navigate(&params);
   } else {
     // Simulate the user typing the url into the omnibox.
     ui_test_utils::NavigateToURLWithDisposition(
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h
index 7316a53..53d5cc069 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h
@@ -7,9 +7,11 @@
 
 #include <map>
 
-#include "base/memory/raw_ptr.h"
-
+#include "base/files/file_path.h"
 #import "base/mac/scoped_nsobject.h"
+#include "base/memory/raw_ptr.h"
+#include "base/scoped_observation.h"
+#include "components/bookmarks/browser/bookmark_model.h"
 #include "components/bookmarks/browser/bookmark_model_observer.h"
 
 class Profile;
@@ -78,12 +80,16 @@
       const bookmarks::BookmarkNode* node) override;
 
   // Rebuilds the main bookmark menu, if it has been marked invalid. Or builds
-  // a bookmark folder submenu on demand.
-  void UpdateMenu(NSMenu* menu, const bookmarks::BookmarkNode* node);
+  // a bookmark folder submenu on demand. If |recurse| is true, also fills all
+  // submenus recursively.
+  void UpdateMenu(NSMenu* menu,
+                  const bookmarks::BookmarkNode* node,
+                  bool recurse);
 
   // I wish I had a "friend @class" construct.
   bookmarks::BookmarkModel* GetBookmarkModel();
   Profile* GetProfile();
+  const base::FilePath& GetProfileDir() const;
 
   // Return the Bookmark menu.
   NSMenu* BookmarkMenu();
@@ -91,30 +97,44 @@
   // Clear all bookmarks from |menu_root_|.
   void ClearBookmarkMenu();
 
+  // Resets |profile_| to nullptr. Called before the Profile is destroyed, if
+  // this bridge is still needed. Rebuilds the entire menu recursively, so it
+  // remains functional after the Profile is destroyed.
+  //
+  // Also performs some internal cleanup, like resetting observers and pointers
+  // to the Profile and KeyedServices.
+  void OnProfileWillBeDestroyed();
+
+  // Returns the GUID of the BookmarkNode for |tag|. If |tag| is not the tag of
+  // an NSMenuItem in this menu, returns the invalid GUID.
+  base::GUID TagToGUID(int64_t tag) const;
+
  private:
   friend class BookmarkMenuBridgeTest;
   friend class test::AppMenuControllerTest;
 
-  void BuildRootMenu();
+  void BuildRootMenu(bool recurse);
 
   // Mark the bookmark menu as being invalid.
   void InvalidateMenu()  { menuIsValid_ = false; }
   bool IsMenuValid() const { return menuIsValid_; }
 
   // Helper for adding the node as a submenu to the menu with the |node|'s title
-  // and the given |image| as its icon.
-  // If |add_extra_items| is true, also adds extra menu items at bottom of
-  // menu, such as "Open All Bookmarks".
+  // and the given |image| as its icon. If |recurse| is true, also fills all
+  // submenus recursively.
   void AddNodeAsSubmenu(NSMenu* menu,
                         const bookmarks::BookmarkNode* node,
-                        NSImage* image);
+                        NSImage* image,
+                        bool recurse);
 
-  // Helper for recursively adding items to our bookmark menu.
-  // All children of |node| will be added to |menu|.
-  // If |add_extra_items| is true, also adds extra menu items at bottom of
-  // menu, such as "Open All Bookmarks".
+  // Helper for adding items to our bookmark menu. All children of |node| will
+  // be added to |menu|. If |recurse| is true, also fills all submenus
+  // recursively.
+  //
   // TODO(jrg): add a counter to enforce maximum nodes added
-  void AddNodeToMenu(const bookmarks::BookmarkNode* node, NSMenu* menu);
+  void AddNodeToMenu(const bookmarks::BookmarkNode* node,
+                     NSMenu* menu,
+                     bool recurse);
 
   // Helper for adding an item to our bookmark menu. An item which has a
   // localized title specified by |message_id| will be added to |menu|.
@@ -144,16 +164,26 @@
   // True iff the menu is up to date with the actual BookmarkModel.
   bool menuIsValid_;
 
-  const raw_ptr<Profile> profile_;  // weak
+  raw_ptr<Profile> profile_;  // weak
   base::scoped_nsobject<BookmarkMenuCocoaController> controller_;
   base::scoped_nsobject<NSMenu> menu_root_;
 
+  base::FilePath profile_dir_;  // Remembered after OnProfileWillBeDestroyed().
+
   // The folder image so we can use one copy for all.
   base::scoped_nsobject<NSImage> folder_image_;
 
   // In order to appropriately update items in the bookmark menu, without
   // forcing a rebuild, map the model's nodes to menu items.
   std::map<const bookmarks::BookmarkNode*, NSMenuItem*> bookmark_nodes_;
+
+  // Tags are NSIntegers, so they're not necessarily large enough to hold a
+  // GUID. Instead, map the tags to the corresponding GUIDs.
+  std::map<int64_t, base::GUID> tag_to_guid_;
+
+  base::ScopedObservation<bookmarks::BookmarkModel,
+                          bookmarks::BookmarkModelObserver>
+      bookmark_model_observation_{this};
 };
 
 #endif  // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_MENU_BRIDGE_H_
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
index d415f8c..9542eb6 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm
@@ -55,6 +55,7 @@
       controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this]),
       menu_root_([menu_root retain]) {
   DCHECK(profile_);
+  profile_dir_ = profile->GetPath();
   DCHECK(menu_root_);
   DCHECK(![menu_root_ delegate]);
   [menu_root_ setDelegate:controller_];
@@ -65,9 +66,6 @@
 BookmarkMenuBridge::~BookmarkMenuBridge() {
   ClearBookmarkMenu();
   [menu_root_ setDelegate:nil];
-  BookmarkModel* model = GetBookmarkModel();
-  if (model)
-    model->RemoveObserver(this);
 }
 
 void BookmarkMenuBridge::BookmarkModelLoaded(BookmarkModel* model,
@@ -75,23 +73,26 @@
   InvalidateMenu();
 }
 
-void BookmarkMenuBridge::UpdateMenu(NSMenu* menu, const BookmarkNode* node) {
+void BookmarkMenuBridge::UpdateMenu(NSMenu* menu,
+                                    const BookmarkNode* node,
+                                    bool recurse) {
   DCHECK(menu);
   DCHECK(controller_);
   DCHECK_EQ([menu delegate], controller_.get());
 
   if (menu == menu_root_) {
     if (!IsMenuValid())
-      BuildRootMenu();
+      BuildRootMenu(recurse);
     return;
   }
 
-  AddNodeToMenu(node, menu);
+  DCHECK(node);
+  AddNodeToMenu(node, menu, recurse);
   // Clear the delegate to prevent further refreshes.
   [menu setDelegate:nil];
 }
 
-void BookmarkMenuBridge::BuildRootMenu() {
+void BookmarkMenuBridge::BuildRootMenu(bool recurse) {
   BookmarkModel* model = GetBookmarkModel();
   if (!model || !model->loaded())
     return;
@@ -118,16 +119,16 @@
     ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
     NSImage* image =
         rb.GetNativeImageNamed(IDR_BOOKMARK_BAR_FOLDER_MANAGED).ToNSImage();
-    AddNodeAsSubmenu(menu_root_, managedNode, image);
+    AddNodeAsSubmenu(menu_root_, managedNode, image, recurse);
   }
   if (!barNode->children().empty())
-    AddNodeToMenu(barNode, menu_root_);
+    AddNodeToMenu(barNode, menu_root_, recurse);
 
   // If the "Other Bookmarks" folder has any content, make a submenu for it and
   // fill it in.
   if (!model->other_node()->children().empty()) {
     [menu_root_ addItem:[NSMenuItem separatorItem]];
-    AddNodeAsSubmenu(menu_root_, model->other_node(), folder_image_);
+    AddNodeAsSubmenu(menu_root_, model->other_node(), folder_image_, recurse);
   }
 
   // If the "Mobile Bookmarks" folder has any content, make a submenu for it and
@@ -138,15 +139,13 @@
     if (model->other_node()->children().empty())
       [menu_root_ addItem:[NSMenuItem separatorItem]];
 
-    AddNodeAsSubmenu(menu_root_, model->mobile_node(), folder_image_);
+    AddNodeAsSubmenu(menu_root_, model->mobile_node(), folder_image_, recurse);
   }
 
   menuIsValid_ = true;
 }
 
-void BookmarkMenuBridge::BookmarkModelBeingDeleted(BookmarkModel* model) {
-  ClearBookmarkMenu();
-}
+void BookmarkMenuBridge::BookmarkModelBeingDeleted(BookmarkModel* model) {}
 
 void BookmarkMenuBridge::BookmarkNodeMoved(BookmarkModel* model,
                                            const BookmarkNode* old_parent,
@@ -205,7 +204,7 @@
   if (!model)
     return;
 
-  model->AddObserver(this);
+  bookmark_model_observation_.Observe(model);
   if (model->loaded())
     BookmarkModelLoaded(model, false);
 }
@@ -219,6 +218,10 @@
   return profile_;
 }
 
+const base::FilePath& BookmarkMenuBridge::GetProfileDir() const {
+  return profile_dir_;
+}
+
 NSMenu* BookmarkMenuBridge::BookmarkMenu() {
   return menu_root_;
 }
@@ -226,6 +229,7 @@
 void BookmarkMenuBridge::ClearBookmarkMenu() {
   InvalidateMenu();
   bookmark_nodes_.clear();
+  tag_to_guid_.clear();
 
   // Recursively delete all menus that look like a bookmark. Also delete all
   // separator items since we explicitly add them back in. This deletes
@@ -253,7 +257,8 @@
 
 void BookmarkMenuBridge::AddNodeAsSubmenu(NSMenu* menu,
                                           const BookmarkNode* node,
-                                          NSImage* image) {
+                                          NSImage* image,
+                                          bool recurse) {
   NSString* title = MenuTitleForNode(node);
   base::scoped_nsobject<NSMenuItem> items(
       [[NSMenuItem alloc] initWithTitle:title action:nil keyEquivalent:@""]);
@@ -263,14 +268,21 @@
 
   // Set a delegate and a tag on the item so that the submenu can be populated
   // when (and if) Cocoa asks for it.
-  [submenu setDelegate:controller_];
+  if (!recurse)
+    [submenu setDelegate:controller_];
   [items setTag:node->id()];
+  tag_to_guid_[node->id()] = node->guid();
 
   [menu addItem:items];
+
+  if (recurse)
+    AddNodeToMenu(node, submenu, recurse);
 }
 
 // TODO(jrg): limit the number of bookmarks in the menubar?
-void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node, NSMenu* menu) {
+void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node,
+                                       NSMenu* menu,
+                                       bool recurse) {
   if (node->children().empty()) {
     NSString* empty_string = l10n_util::GetNSString(IDS_MENU_EMPTY_SUBMENU);
     base::scoped_nsobject<NSMenuItem> item([[NSMenuItem alloc]
@@ -283,13 +295,14 @@
 
   for (const auto& child : node->children()) {
     if (child->is_folder()) {
-      AddNodeAsSubmenu(menu, child.get(), folder_image_);
+      AddNodeAsSubmenu(menu, child.get(), folder_image_, recurse);
     } else {
       base::scoped_nsobject<NSMenuItem> item([[NSMenuItem alloc]
           initWithTitle:MenuTitleForNode(child.get())
                  action:nil
           keyEquivalent:@""]);
       bookmark_nodes_[child.get()] = item;
+      tag_to_guid_[child->id()] = child->guid();
       ConfigureMenuItem(child.get(), item, false);
       [menu addItem:item];
     }
@@ -304,6 +317,7 @@
   [item setTarget:controller_];
   [item setAction:@selector(openBookmarkMenuItem:)];
   [item setTag:node->id()];
+  tag_to_guid_[node->id()] = node->guid();
   if (node->is_url())
     [item setToolTip:[BookmarkMenuCocoaController tooltipForNode:node]];
   // Check to see if we have a favicon.
@@ -330,3 +344,17 @@
     return nil;
   return it->second;
 }
+
+void BookmarkMenuBridge::OnProfileWillBeDestroyed() {
+  BuildRootMenu(/*recurse=*/true);
+  profile_ = nullptr;
+  bookmark_model_observation_.Reset();
+  // |bookmark_nodes_| stores the nodes by pointer, so it would be unsafe to
+  // keep them.
+  bookmark_nodes_.clear();
+}
+
+base::GUID BookmarkMenuBridge::TagToGUID(int64_t tag) const {
+  const auto& it = tag_to_guid_.find(tag);
+  return it == tag_to_guid_.end() ? base::GUID() : it->second;
+}
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm
index 182251a..bca0bad 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm
@@ -57,7 +57,9 @@
              ManagedBookmarkServiceFactory::GetDefaultFactory()}};
   }
 
-  void UpdateRootMenu() { bridge_->UpdateMenu(menu_, nullptr); }
+  void UpdateRootMenu() {
+    bridge_->UpdateMenu(menu_, nullptr, /*recurse=*/false);
+  }
 
   // We are a friend of BookmarkMenuBridge (and have access to
   // protected methods), but none of the classes generated by TEST_F()
@@ -71,7 +73,7 @@
   void AddNodeToMenu(BookmarkMenuBridge* bridge,
                      const BookmarkNode* root,
                      NSMenu* menu) {
-    bridge->AddNodeToMenu(root, menu);
+    bridge->AddNodeToMenu(root, menu, /*recurse=*/false);
   }
 
   NSMenuItem* MenuItemForNode(BookmarkMenuBridge* bridge,
@@ -261,7 +263,7 @@
   EXPECT_TRUE([submenu delegate]);
   EXPECT_EQ(0u, [submenu numberOfItems]);
 
-  bridge_->UpdateMenu(submenu, folder);
+  bridge_->UpdateMenu(submenu, folder, /*recurse=*/false);
   // Updating the menu clears the delegate to prevent further updates.
   EXPECT_FALSE([submenu delegate]);
 
@@ -271,7 +273,8 @@
   model->AddURL(folder, 0, u"Test Item", GURL("http://test"));
   UpdateRootMenu();
   // There will be a new submenu each time, Cocoa will update it if needed.
-  bridge_->UpdateMenu([[menu_ itemAtIndex:1] submenu], folder);
+  bridge_->UpdateMenu([[menu_ itemAtIndex:1] submenu], folder,
+                      /*recurse=*/false);
 
   EXPECT_TRUE(MenuItemForNode(bridge_.get(), folder->children().front().get()));
 
@@ -289,7 +292,8 @@
   EXPECT_NE(old_menu.get(), [[menu_ itemAtIndex:1] submenu]);
   EXPECT_FALSE([old_menu delegate]);
 
-  bridge_->UpdateMenu([[menu_ itemAtIndex:1] submenu], folder);
+  bridge_->UpdateMenu([[menu_ itemAtIndex:1] submenu], folder,
+                      /*recurse=*/false);
   EXPECT_TRUE(MenuItemForNode(bridge_.get(), folder->children()[0].get()));
   EXPECT_TRUE(MenuItemForNode(bridge_.get(), folder->children()[1].get()));
 
@@ -307,7 +311,8 @@
   EXPECT_FALSE(MenuItemForNode(bridge_.get(), folder->children()[0].get()));
 
   UpdateRootMenu();
-  bridge_->UpdateMenu([[menu_ itemAtIndex:1] submenu], folder);
+  bridge_->UpdateMenu([[menu_ itemAtIndex:1] submenu], folder,
+                      /*recurse=*/false);
 
   EXPECT_FALSE(MenuItemForNode(bridge_.get(), removed_node));
   EXPECT_TRUE(MenuItemForNode(bridge_.get(), folder->children()[0].get()));
@@ -336,7 +341,8 @@
 
   // The "other" submenu is loaded lazily.
   EXPECT_EQ(0u, [[other submenu] numberOfItems]);
-  bridge_->UpdateMenu([other submenu], model->other_node());
+  bridge_->UpdateMenu([other submenu], model -> other_node(),
+                      /*recurse=*/false);
 
   ASSERT_GT([[other submenu] numberOfItems], 0);
   EXPECT_NSEQ(@"http://foo/", [[[other submenu] itemAtIndex:0] title]);
@@ -377,3 +383,50 @@
   EXPECT_TRUE(item);
 }
 
+TEST_F(BookmarkMenuBridgeTest, BuildMenuRecursivelyBeforeProfileDestruction) {
+  BookmarkModel* model = bridge_->GetBookmarkModel();
+  const BookmarkNode* root = model->bookmark_bar_node();
+  EXPECT_TRUE(model && root);
+
+  // root
+  //    + Item 1
+  //    + Folder 1
+  //        + Folder 2
+  //            + Item 2
+  const BookmarkNode* item1 =
+      model->AddURL(root, 0, u"Item 1", GURL("http://item-1/"));
+  base::GUID item1_guid = item1->guid();
+  const BookmarkNode* folder1 = model->AddFolder(root, 1, u"Folder 1");
+  base::GUID folder1_guid = folder1->guid();
+  const BookmarkNode* folder2 = model->AddFolder(folder1, 0, u"Folder 2");
+  base::GUID folder2_guid = folder2->guid();
+  const BookmarkNode* item2 =
+      model->AddURL(folder2, 0, u"Item 2", GURL("http://item-2/"));
+  base::GUID item2_guid = item2->guid();
+
+  // We didn't show the menu or any submenus, so it shouldn't contain these
+  // items.
+  NSMenuItem* item = [menu_ itemWithTitle:@"Item 1"];
+  EXPECT_FALSE(item);
+  item = [menu_ itemWithTitle:@"Folder 1"];
+  EXPECT_FALSE(item);
+
+  bridge_->OnProfileWillBeDestroyed();
+  EXPECT_EQ(nullptr, bridge_->GetProfile());
+
+  // OnProfileWillBeDestroyed() should've recursively populated the menu.
+  item = [menu_ itemWithTitle:@"Item 1"];
+  EXPECT_TRUE(item);
+  EXPECT_EQ(item1_guid, bridge_->TagToGUID([item tag]));
+  item = [menu_ itemWithTitle:@"Folder 1"];
+  EXPECT_TRUE(item);
+  EXPECT_EQ(folder1_guid, bridge_->TagToGUID([item tag]));
+  EXPECT_TRUE([item hasSubmenu]);
+  item = [[item submenu] itemWithTitle:@"Folder 2"];
+  EXPECT_TRUE(item);
+  EXPECT_EQ(folder2_guid, bridge_->TagToGUID([item tag]));
+  EXPECT_TRUE([item hasSubmenu]);
+  item = [[item submenu] itemWithTitle:@"Item 2"];
+  EXPECT_TRUE(item);
+  EXPECT_EQ(item2_guid, bridge_->TagToGUID([item tag]));
+}
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h
index 9c61ea9..19846b2 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h
@@ -7,9 +7,11 @@
 
 #import <Cocoa/Cocoa.h>
 
+#include "base/guid.h"
 #include "ui/base/window_open_disposition.h"
 
 class BookmarkMenuBridge;
+class Profile;
 
 namespace bookmarks {
 class BookmarkNode;
@@ -33,10 +35,13 @@
 
 
 @interface BookmarkMenuCocoaController (ExposedForUnitTests)
-- (const bookmarks::BookmarkNode*)nodeForIdentifier:(int)identifier;
-- (void)openURLForNode:(const bookmarks::BookmarkNode*)node;
+- (const bookmarks::BookmarkNode*)nodeForGUID:(const base::GUID&)guid
+                                    inProfile:(Profile*)profile;
+- (void)openURLForIdentifier:(base::GUID)guid inProfile:(Profile*)profile;
+- (void)openURLForIdentifier:(base::GUID)guid;
 - (void)openAll:(NSInteger)tag
     withDisposition:(WindowOpenDisposition)disposition;
+- (base::GUID)guidForIdentifier:(int)identifier;
 @end  // BookmarkMenuCocoaController (ExposedForUnitTests)
 
 #endif  // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_MENU_COCOA_CONTROLLER_H_
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm
index 1880a00..c64675bf 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/memory/raw_ptr.h"
-
 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h"
 
 #import "base/mac/foundation_util.h"
+#include "base/memory/raw_ptr.h"
 #include "base/metrics/user_metrics.h"
 #include "base/strings/sys_string_conversions.h"
 #include "chrome/app/chrome_command_ids.h"  // IDC_BOOKMARK_MENU
 #import "chrome/browser/app_controller_mac.h"
+#include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/bookmarks/bookmark_stats.h"
 #include "chrome/browser/ui/bookmarks/bookmark_utils.h"
@@ -23,8 +23,10 @@
 #include "components/profile_metrics/browser_profile_type.h"
 #import "ui/base/cocoa/cocoa_base_utils.h"
 #import "ui/base/cocoa/menu_controller.h"
+#include "ui/base/window_open_disposition.h"
 
 using base::UserMetricsAction;
+using bookmarks::BookmarkModel;
 using bookmarks::BookmarkNode;
 using content::OpenURLParams;
 using content::Referrer;
@@ -41,6 +43,109 @@
   return nil;
 }
 
+void DoOpenBookmark(Profile* profile,
+                    WindowOpenDisposition disposition,
+                    const BookmarkNode* node) {
+  DCHECK(profile);
+  Browser* browser = chrome::FindTabbedBrowser(profile, true);
+  if (!browser)
+    browser = Browser::Create(Browser::CreateParams(profile, true));
+  OpenURLParams params(node->url(), Referrer(), disposition,
+                       ui::PAGE_TRANSITION_AUTO_BOOKMARK, false);
+  browser->OpenURL(params);
+  RecordBookmarkLaunch(BookmarkLaunchLocation::kTopMenu,
+                       profile_metrics::GetBrowserProfileType(profile));
+}
+
+// Waits for the BookmarkModelLoaded(), then calls DoOpenBookmark() on it.
+//
+// Owned by itself. Allocate with `new`.
+class BookmarkRestorer : public bookmarks::BookmarkModelObserver {
+ public:
+  BookmarkRestorer(Profile* profile,
+                   WindowOpenDisposition disposition,
+                   base::GUID guid);
+  ~BookmarkRestorer() override = default;
+
+  // bookmarks::BookmarkModelObserver:
+  void BookmarkModelBeingDeleted(BookmarkModel* model) override;
+  void BookmarkModelLoaded(BookmarkModel* model, bool ids_reassigned) override;
+  void BookmarkNodeMoved(BookmarkModel* model,
+                         const BookmarkNode* old_parent,
+                         size_t old_index,
+                         const BookmarkNode* new_parent,
+                         size_t new_index) override {}
+  void BookmarkNodeAdded(BookmarkModel* model,
+                         const BookmarkNode* parent,
+                         size_t index,
+                         bool added_by_user) override {}
+  void BookmarkNodeRemoved(BookmarkModel* model,
+                           const BookmarkNode* parent,
+                           size_t old_index,
+                           const BookmarkNode* node,
+                           const std::set<GURL>& removed_urls) override {}
+  void BookmarkNodeChanged(BookmarkModel* model,
+                           const BookmarkNode* node) override {}
+  void BookmarkNodeFaviconChanged(BookmarkModel* model,
+                                  const BookmarkNode* node) override {}
+  void BookmarkNodeChildrenReordered(BookmarkModel* model,
+                                     const BookmarkNode* node) override {}
+  void BookmarkAllUserNodesRemoved(
+      BookmarkModel* model,
+      const std::set<GURL>& removed_urls) override {}
+
+ private:
+  base::ScopedObservation<BookmarkModel, BookmarkModelObserver> observation_{
+      this};
+  raw_ptr<Profile> profile_;
+  WindowOpenDisposition disposition_;
+  base::GUID guid_;
+};
+
+BookmarkRestorer::BookmarkRestorer(Profile* profile,
+                                   WindowOpenDisposition disposition,
+                                   base::GUID guid)
+    : profile_(profile), disposition_(disposition), guid_(guid) {
+  observation_.Observe(BookmarkModelFactory::GetForBrowserContext(profile));
+}
+
+void BookmarkRestorer::BookmarkModelBeingDeleted(BookmarkModel* model) {
+  model->RemoveObserver(this);
+  delete this;
+}
+
+void BookmarkRestorer::BookmarkModelLoaded(BookmarkModel* model,
+                                           bool ids_reassigned) {
+  model->RemoveObserver(this);
+  if (const auto* node = bookmarks::GetBookmarkNodeByGUID(model, guid_))
+    DoOpenBookmark(profile_, disposition_, node);
+  delete this;
+}
+
+// Open the URL of the given BookmarkNode in the current tab. Waits for
+// BookmarkModelLoaded() if needed (e.g. for a freshly-loaded profile).
+void OpenBookmarkByGUID(WindowOpenDisposition disposition,
+                        base::GUID guid,
+                        Profile* profile) {
+  if (!profile)
+    return;  // Failed to load profile, ignore.
+
+  const auto* model = BookmarkModelFactory::GetForBrowserContext(profile);
+  DCHECK(model);
+  if (!model)
+    return;  // Should never be reached.
+
+  if (const auto* node = bookmarks::GetBookmarkNodeByGUID(model, guid)) {
+    // BookmarkModel already loaded this bookmark. Open it immediately.
+    DoOpenBookmark(profile, disposition, node);
+  } else {
+    // BookmarkModel hasn't loaded yet. Wait for BookmarkModelLoaded(), and
+    // *then* open it.
+    DCHECK(!model->loaded());
+    std::ignore = new BookmarkRestorer(profile, disposition, std::move(guid));
+  }
+}
+
 }  // namespace
 
 @implementation BookmarkMenuCocoaController {
@@ -74,8 +179,13 @@
 // NSMenu delegate method: called just before menu is displayed.
 - (void)menuNeedsUpdate:(NSMenu*)menu {
   NSMenuItem* item = GetItemWithSubmenu(menu);
-  const BookmarkNode* node = [self nodeForIdentifier:[item tag]];
-  _bridge->UpdateMenu(menu, node);
+  Profile* profile = _bridge->GetProfile();
+  if (!profile)
+    return;  // Unfortunately, we can't update a menu with a dead profile.
+  const auto* model = BookmarkModelFactory::GetForBrowserContext(profile);
+  base::GUID guid = _bridge->TagToGUID([item tag]);
+  const auto* node = bookmarks::GetBookmarkNodeByGUID(model, guid);
+  _bridge->UpdateMenu(menu, node, /*recurse=*/false);
 }
 
 - (BOOL)menuHasKeyEquivalent:(NSMenu*)menu
@@ -87,40 +197,34 @@
   return NO;
 }
 
-// Return the a BookmarkNode that has the given id (called
-// "identifier" here to avoid conflict with objc's concept of "id").
-- (const BookmarkNode*)nodeForIdentifier:(int)identifier {
-  return bookmarks::GetBookmarkNodeByID(_bridge->GetBookmarkModel(),
-                                        identifier);
-}
-
-// Open the URL of the given BookmarkNode in the current tab.
-- (void)openURLForNode:(const BookmarkNode*)node {
-  Browser* browser = chrome::FindTabbedBrowser(_bridge->GetProfile(), true);
-  if (!browser) {
-    browser =
-        Browser::Create(Browser::CreateParams(_bridge->GetProfile(), true));
-  }
+// Open the URL of the given BookmarkNode in the current tab. If the Profile
+// is not loaded in memory, load it first.
+- (void)openURLForGUID:(base::GUID)guid {
   WindowOpenDisposition disposition =
       ui::WindowOpenDispositionFromNSEvent([NSApp currentEvent]);
-  OpenURLParams params(
-      node->url(), Referrer(), disposition,
-      ui::PAGE_TRANSITION_AUTO_BOOKMARK, false);
-  browser->OpenURL(params);
-  RecordBookmarkLaunch(
-      BookmarkLaunchLocation::kTopMenu,
-      profile_metrics::GetBrowserProfileType(_bridge->GetProfile()));
+  if (Profile* profile = _bridge->GetProfile()) {
+    OpenBookmarkByGUID(disposition, std::move(guid), profile);
+  } else {
+    // Both BookmarkMenuBridge and BookmarkMenuCocoaController could get
+    // destroyed before RunInSafeProfileHelper finishes. The callback needs to
+    // be self-contained.
+    app_controller_mac::RunInProfileSafely(
+        _bridge->GetProfileDir(),
+        base::BindOnce(&OpenBookmarkByGUID, disposition, std::move(guid)),
+        app_controller_mac::kIgnoreOnFailure);
+  }
+}
+
+// Return the GUID of the BookmarkNode that has the given id (called
+// "identifier" here to avoid conflict with objc's concept of "id").
+- (base::GUID)guidForIdentifier:(int)identifier {
+  return _bridge->TagToGUID(identifier);
 }
 
 - (IBAction)openBookmarkMenuItem:(id)sender {
   NSInteger tag = [sender tag];
-  int identifier = tag;
-  const BookmarkNode* node = [self nodeForIdentifier:identifier];
-  DCHECK(node);
-  if (!node)
-    return;  // shouldn't be reached
-
-  [self openURLForNode:node];
+  base::GUID guid = [self guidForIdentifier:tag];
+  [self openURLForGUID:std::move(guid)];
 }
 
 @end  // BookmarkMenuCocoaController
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller_unittest.mm
index 77a0d62..af4592df 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller_unittest.mm
@@ -3,10 +3,13 @@
 // found in the LICENSE file.
 
 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h"
+#include "components/bookmarks/browser/bookmark_node.h"
 
 #include <string>
 
+#include "base/containers/span.h"
 #import "base/mac/scoped_nsobject.h"
+#include "base/ranges/algorithm.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/cocoa/test/cocoa_test_helper.h"
@@ -41,14 +44,21 @@
   return self;
 }
 
-- (const BookmarkNode*)nodeForIdentifier:(int)identifier {
+- (base::GUID)guidForIdentifier:(int)identifier {
   if ((identifier < 0) || (identifier >= 2))
-    return NULL;
-  return _nodes[identifier];
+    return base::GUID();
+  DCHECK(_nodes[identifier]);
+  return _nodes[identifier]->guid();
 }
 
-- (void)openURLForNode:(const BookmarkNode*)node {
-  std::string url = node->url().possibly_invalid_spec();
+- (void)openURLForGUID:(base::GUID)guid {
+  base::span<const BookmarkNode*> nodes = base::make_span(_nodes);
+  auto it = base::ranges::find_if(nodes, [&guid](const BookmarkNode* node) {
+    return node->guid() == guid;
+  });
+  ASSERT_NE(it, nodes.end());
+
+  std::string url = (*it)->url().possibly_invalid_spec();
   if (url.find("http://0.com") != std::string::npos)
     _opened[0] = YES;
   if (url.find("http://1.com") != std::string::npos)
diff --git a/chrome/browser/ui/thumbnails/thumbnail_image.h b/chrome/browser/ui/thumbnails/thumbnail_image.h
index 9fedb389..62a550e 100644
--- a/chrome/browser/ui/thumbnails/thumbnail_image.h
+++ b/chrome/browser/ui/thumbnails/thumbnail_image.h
@@ -26,7 +26,7 @@
 
 // Stores compressed thumbnail data for a tab and can vend that data as an
 // uncompressed image to observers.
-class ThumbnailImage : public base::RefCounted<ThumbnailImage> {
+class ThumbnailImage : public base::RefCountedThreadSafe<ThumbnailImage> {
  public:
   // Describes the readiness of the source page for thumbnail capture.
   enum class CaptureReadiness : int {
@@ -170,7 +170,7 @@
  private:
   friend class Delegate;
   friend class ThumbnailImageTest;
-  friend class base::RefCounted<ThumbnailImage>;
+  friend class base::RefCountedThreadSafe<ThumbnailImage>;
 
   virtual ~ThumbnailImage();
 
diff --git a/chrome/browser/ui/translate/partial_translate_bubble_model_impl.cc b/chrome/browser/ui/translate/partial_translate_bubble_model_impl.cc
index 5512b68..dd364429 100644
--- a/chrome/browser/ui/translate/partial_translate_bubble_model_impl.cc
+++ b/chrome/browser/ui/translate/partial_translate_bubble_model_impl.cc
@@ -188,7 +188,10 @@
     content::WebContents* web_contents) {
   translate::TranslateManager* translate_manager =
       ChromeTranslateClient::GetManagerFromWebContents(web_contents);
-  translate_manager->ShowTranslateUI(true);
+  translate_manager->translate_client()
+      ->GetTranslatePrefs()
+      ->SetRecentTargetLanguage(GetTargetLanguageCode());
+  translate_manager->ShowTranslateUI(GetTargetLanguageCode(), true);
 }
 
 void PartialTranslateBubbleModelImpl::OnPartialTranslateResponse(
diff --git a/chrome/browser/ui/views/extensions/extensions_request_access_button_hover_card.cc b/chrome/browser/ui/views/extensions/extensions_request_access_button_hover_card.cc
index c49a8f2..fcf378a 100644
--- a/chrome/browser/ui/views/extensions/extensions_request_access_button_hover_card.cc
+++ b/chrome/browser/ui/views/extensions/extensions_request_access_button_hover_card.cc
@@ -10,8 +10,8 @@
 #include "chrome/browser/ui/views/extensions/extensions_dialogs_utils.h"
 #include "chrome/grit/generated_resources.h"
 #include "content/public/browser/web_contents.h"
-#include "ui/base/l10n/l10n_util.h"
 #include "ui/base/models/dialog_model.h"
+#include "ui/base/models/dialog_model_field.h"
 #include "ui/views/bubble/bubble_dialog_delegate_view.h"
 #include "ui/views/bubble/bubble_dialog_model_host.h"
 #include "ui/views/view.h"
@@ -44,13 +44,14 @@
   const std::u16string url = GetCurrentHost(web_contents);
   if (actions.size() == 1) {
     dialog_builder.SetIcon(GetIcon(actions[0], web_contents))
-        .AddParagraph(ui::DialogModelLabel(l10n_util::GetStringFUTF16(
+        .AddParagraph(ui::DialogModelLabel::CreateWithReplacements(
             IDS_EXTENSIONS_REQUEST_ACCESS_BUTTON_TOOLTIP_SINGLE_EXTENSION,
-            actions[0]->GetActionName(), url)));
+            {ui::DialogModelLabel::CreatePlainText(actions[0]->GetActionName()),
+             ui::DialogModelLabel::CreateEmphasizedText(url)}));
   } else {
-    dialog_builder.AddParagraph(ui::DialogModelLabel(l10n_util::GetStringFUTF16(
+    dialog_builder.AddParagraph(ui::DialogModelLabel::CreateWithReplacement(
         IDS_EXTENSIONS_REQUEST_ACCESS_BUTTON_TOOLTIP_MULTIPLE_EXTENSIONS,
-        url)));
+        ui::DialogModelLabel::CreateEmphasizedText(url)));
     for (auto* action : actions) {
       dialog_builder.AddMenuItem(
           GetIcon(action, web_contents), action->GetActionName(),
diff --git a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
index 97ad400..0fe8528 100644
--- a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
+++ b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
@@ -523,7 +523,7 @@
       // virtual view.
       alert_virtual_view_->GetCustomData().role =
           ax::mojom::Role::kGenericContainer;
-      alert_virtual_view_->GetCustomData().SetName(label);
+      alert_virtual_view_->GetCustomData().SetNameChecked(label);
       alert_virtual_view_->NotifyAccessibilityEvent(ax::mojom::Event::kAlert);
     }
     label()->SetVisible(true);
diff --git a/chrome/browser/ui/views/location_bar/location_icon_view.cc b/chrome/browser/ui/views/location_bar/location_icon_view.cc
index f221701..a679245 100644
--- a/chrome/browser/ui/views/location_bar/location_icon_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_icon_view.cc
@@ -92,7 +92,7 @@
 void LocationIconView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   if (delegate_->IsEditingOrEmpty()) {
     node_data->role = ax::mojom::Role::kImage;
-    node_data->SetName(l10n_util::GetStringUTF8(IDS_ACC_SEARCH_ICON));
+    node_data->SetNameChecked(l10n_util::GetStringUTF8(IDS_ACC_SEARCH_ICON));
     return;
   }
 
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
index d7dd69c..c0e88a0 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_result_view.cc
@@ -79,7 +79,7 @@
     // Although this appears visually as a button, expose as a list box option
     // so that it matches the other options within its list box container.
     node_data->role = ax::mojom::Role::kListBoxOption;
-    node_data->SetName(
+    node_data->SetNameChecked(
         l10n_util::GetStringUTF16(IDS_ACC_REMOVE_SUGGESTION_BUTTON));
   }
 };
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
index 4abbc236..6fb676f6 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -1240,7 +1240,7 @@
 
 void OmniboxViewViews::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   node_data->role = ax::mojom::Role::kTextField;
-  node_data->SetName(l10n_util::GetStringUTF8(IDS_ACCNAME_LOCATION));
+  node_data->SetNameChecked(l10n_util::GetStringUTF8(IDS_ACCNAME_LOCATION));
   node_data->AddStringAttribute(ax::mojom::StringAttribute::kAutoComplete,
                                 "both");
 // Expose keyboard shortcut where it makes sense.
diff --git a/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc b/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc
index 71cb795..15ddeb9 100644
--- a/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc
+++ b/chrome/browser/ui/views/passwords/password_generation_popup_view_views.cc
@@ -318,7 +318,7 @@
     return;
   }
   node_data->role = ax::mojom::Role::kMenuItem;
-  node_data->SetName(base::JoinString(
+  node_data->SetNameChecked(base::JoinString(
       {controller_->SuggestedText(), controller_->password()}, u" "));
   node_data->SetDescription(controller_->HelpText());
 }
diff --git a/chrome/browser/ui/views/performance_controls/high_efficiency_bubble_view.cc b/chrome/browser/ui/views/performance_controls/high_efficiency_bubble_view.cc
index b0e5348..5346006 100644
--- a/chrome/browser/ui/views/performance_controls/high_efficiency_bubble_view.cc
+++ b/chrome/browser/ui/views/performance_controls/high_efficiency_bubble_view.cc
@@ -37,14 +37,16 @@
           .SetDialogDestroyingCallback(
               base::BindOnce(&HighEfficiencyBubbleDelegate::OnDialogDestroy,
                              base::Unretained(bubble_delegate)))
-          .AddParagraph(ui::DialogModelLabel(IDS_HIGH_EFFICIENCY_DIALOG_BODY)
-                            .set_is_secondary())
-          .AddOkButton(base::OnceClosure(), l10n_util::GetStringUTF16(IDS_DONE))
-          .AddExtraLink(ui::DialogModelLabel::CreateLink(
-              IDS_SETTINGS_TITLE,
-              base::BindRepeating(
-                  &HighEfficiencyBubbleDelegate::OnSettingsClicked,
-                  base::Unretained(bubble_delegate))))
+          .AddParagraph(
+              ui::DialogModelLabel::CreateWithReplacement(
+                  IDS_HIGH_EFFICIENCY_DIALOG_BODY,
+                  ui::DialogModelLabel::CreateLink(
+                      IDS_HIGH_EFFICIENCY_DIALOG_BODY_LINK_TEXT,
+                      base::BindRepeating(
+                          &HighEfficiencyBubbleDelegate::OnSettingsClicked,
+                          base::Unretained(bubble_delegate))))
+                  .set_is_secondary())
+          .AddOkButton(base::DoNothing())
           .Build();
 
   auto bubble_unique = std::make_unique<views::BubbleDialogModelHost>(
diff --git a/chrome/browser/ui/views/side_panel/side_panel_resize_area.cc b/chrome/browser/ui/views/side_panel/side_panel_resize_area.cc
index 2339845..34365da 100644
--- a/chrome/browser/ui/views/side_panel/side_panel_resize_area.cc
+++ b/chrome/browser/ui/views/side_panel/side_panel_resize_area.cc
@@ -31,7 +31,8 @@
 
 void SidePanelResizeHandle::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   node_data->role = ax::mojom::Role::kSlider;
-  node_data->SetName(l10n_util::GetStringUTF16(IDS_ACCNAME_SIDE_PANEL_RESIZE));
+  node_data->SetNameChecked(
+      l10n_util::GetStringUTF16(IDS_ACCNAME_SIDE_PANEL_RESIZE));
 }
 
 void SidePanelResizeHandle::OnThemeChanged() {
diff --git a/chrome/browser/ui/views/tabs/tab_group_header.cc b/chrome/browser/ui/views/tabs/tab_group_header.cc
index a0c9775..e9e43b40 100644
--- a/chrome/browser/ui/views/tabs/tab_group_header.cc
+++ b/chrome/browser/ui/views/tabs/tab_group_header.cc
@@ -276,10 +276,10 @@
                    : l10n_util::GetStringUTF16(IDS_GROUP_AX_LABEL_EXPANDED);
 #endif
   if (title.empty()) {
-    node_data->SetName(l10n_util::GetStringFUTF16(
+    node_data->SetNameChecked(l10n_util::GetStringFUTF16(
         IDS_GROUP_AX_LABEL_UNNAMED_GROUP_FORMAT, contents, collapsed_state));
   } else {
-    node_data->SetName(
+    node_data->SetNameChecked(
         l10n_util::GetStringFUTF16(IDS_GROUP_AX_LABEL_NAMED_GROUP_FORMAT, title,
                                    contents, collapsed_state));
   }
diff --git a/chrome/browser/ui/webui/management/management_ui_handler_unittest.cc b/chrome/browser/ui/webui/management/management_ui_handler_unittest.cc
index 8d5a97d6..0905ca4 100644
--- a/chrome/browser/ui/webui/management/management_ui_handler_unittest.cc
+++ b/chrome/browser/ui/webui/management/management_ui_handler_unittest.cc
@@ -1088,10 +1088,8 @@
   PrefProxyConfigTrackerImpl::RegisterProfilePrefs(user_prefs_.registry());
   ash::NetworkHandler::Get()->InitializePrefServices(&user_prefs_,
                                                      &local_state_);
-  base::Value policy_prefs_config = ProxyConfigDictionary::CreateAutoDetect();
-  user_prefs_.SetUserPref(
-      proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(policy_prefs_config)));
+  user_prefs_.SetUserPref(proxy_config::prefs::kProxy,
+                          ProxyConfigDictionary::CreateAutoDetect());
   base::RunLoop().RunUntilIdle();
 
   GetTestConfig().managed_device = true;
@@ -1135,10 +1133,8 @@
   PrefProxyConfigTrackerImpl::RegisterProfilePrefs(user_prefs_.registry());
   ash::NetworkHandler::Get()->InitializePrefServices(&user_prefs_,
                                                      &local_state_);
-  base::Value policy_prefs_config = ProxyConfigDictionary::CreateDirect();
-  user_prefs_.SetUserPref(
-      proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(policy_prefs_config)));
+  user_prefs_.SetUserPref(proxy_config::prefs::kProxy,
+                          ProxyConfigDictionary::CreateDirect());
   base::RunLoop().RunUntilIdle();
 
   GetTestConfig().managed_device = true;
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
index 180a17b..3608c32 100644
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2942,18 +2942,18 @@
     {"siteSettingsVrMidSentence", IDS_SITE_SETTINGS_TYPE_VR_MID_SENTENCE},
     {"siteSettingsVrAskRecommended",
      IDS_SETTINGS_SITE_SETTINGS_VR_ASK_RECOMMENDED},
-    {"siteSettingsWindowPlacement", IDS_SITE_SETTINGS_TYPE_WINDOW_MANAGEMENT},
-    {"siteSettingsWindowPlacementMidSentence",
+    {"siteSettingsWindowManagement", IDS_SITE_SETTINGS_TYPE_WINDOW_MANAGEMENT},
+    {"siteSettingsWindowManagementMidSentence",
      IDS_SITE_SETTINGS_TYPE_WINDOW_MANAGEMENT_MID_SENTENCE},
-    {"siteSettingsWindowPlacementDescription",
+    {"siteSettingsWindowManagementDescription",
      IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_DESCRIPTION},
-    {"siteSettingsWindowPlacementAsk",
+    {"siteSettingsWindowManagementAsk",
      IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_ASK},
-    {"siteSettingsWindowPlacementBlocked",
+    {"siteSettingsWindowManagementBlocked",
      IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_BLOCKED},
-    {"siteSettingsWindowPlacementAskExceptions",
+    {"siteSettingsWindowManagementAskExceptions",
      IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_ASK_EXCEPTIONS},
-    {"siteSettingsWindowPlacementBlockedExceptions",
+    {"siteSettingsWindowManagementBlockedExceptions",
      IDS_SETTINGS_SITE_SETTINGS_WINDOW_MANAGEMENT_BLOCKED_EXCEPTIONS},
     {"siteSettingsFontAccessMidSentence",
      IDS_SITE_SETTINGS_TYPE_FONT_ACCESS_MID_SENTENCE},
diff --git a/chrome/browser/vr/test/constants.cc b/chrome/browser/vr/test/constants.cc
index 4fa4b77f..952d377 100644
--- a/chrome/browser/vr/test/constants.cc
+++ b/chrome/browser/vr/test/constants.cc
@@ -7,7 +7,7 @@
 namespace vr {
 
 gfx::Transform GetPixelDaydreamProjMatrix() {
-  static const gfx::Transform pixel_daydream_proj_matrix(
+  static const auto pixel_daydream_proj_matrix = gfx::Transform::RowMajor(
       1.03317f, 0.0f, 0.271253f, 0.0f, 0.0f, 0.862458f, -0.0314586f, 0.0f, 0.0f,
       0.0f, -1.002f, -0.2002f, 0.0f, 0.0f, -1.0f, 0.0f);
   return pixel_daydream_proj_matrix;
diff --git a/chrome/browser/vr/ui_input_manager_unittest.cc b/chrome/browser/vr/ui_input_manager_unittest.cc
index 11a9af51..75797d5 100644
--- a/chrome/browser/vr/ui_input_manager_unittest.cc
+++ b/chrome/browser/vr/ui_input_manager_unittest.cc
@@ -161,8 +161,8 @@
  protected:
   RenderInfo CreateRenderInfo() {
     RenderInfo render_info;
-    gfx::Transform projection_matrix(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0,
-                                     -1, 0.5);
+    auto projection_matrix = gfx::Transform::RowMajor(1, 0, 0, 0, 0, 1, 0, 0, 0,
+                                                      0, -1, 0, 0, 0, -1, 0.5);
     projection_matrix.Scale(
         1.0f, static_cast<float>(kWindowSize.width()) / kWindowSize.height());
 
diff --git a/chrome/browser/vr/webxr_vr_frame_pose_browser_test.cc b/chrome/browser/vr/webxr_vr_frame_pose_browser_test.cc
index 1116c7b..8751a73 100644
--- a/chrome/browser/vr/webxr_vr_frame_pose_browser_test.cc
+++ b/chrome/browser/vr/webxr_vr_frame_pose_browser_test.cc
@@ -122,7 +122,7 @@
   // Almost identity matrix - enough different that we can identify if magic
   // window poses are used instead of presenting poses.
   pose->device_to_origin =
-      gfx::Transform(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
+      gfx::Transform::RowMajor(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
   std::move(callback).Run(std::move(pose));
 }
 
diff --git a/chrome/browser/vr/win/graphics_delegate_win.cc b/chrome/browser/vr/win/graphics_delegate_win.cc
index 8d0ed3d..f7a686b2 100644
--- a/chrome/browser/vr/win/graphics_delegate_win.cc
+++ b/chrome/browser/vr/win/graphics_delegate_win.cc
@@ -263,12 +263,12 @@
   float x_scale = 2.0f / (left_tan + right_tan);
   float y_scale = 2.0f / (up_tan + down_tan);
   // clang-format off
-  model.proj_matrix =
-      gfx::Transform(x_scale, 0, -((left_tan - right_tan) * x_scale * 0.5), 0,
-                     0, y_scale, ((up_tan - down_tan) * y_scale * 0.5), 0,
-                     0, 0, (kZFar + kZNear) / (kZNear - kZFar),
-                        2 * kZFar * kZNear / (kZNear - kZFar),
-                     0, 0, -1, 0);
+  model.proj_matrix = gfx::Transform::RowMajor(
+      x_scale, 0, -((left_tan - right_tan) * x_scale * 0.5), 0,
+      0, y_scale, ((up_tan - down_tan) * y_scale * 0.5), 0,
+      0, 0, (kZFar + kZNear) / (kZNear - kZFar),
+          2 * kZFar * kZNear / (kZNear - kZFar),
+      0, 0, -1, 0);
   // clang-format on
   model.view_proj_matrix = model.proj_matrix * model.view_matrix;
   return model;
diff --git a/chrome/browser/web_applications/os_integration/web_app_shortcut_win_unittest.cc b/chrome/browser/web_applications/os_integration/web_app_shortcut_win_unittest.cc
index 3247366..f55dad1 100644
--- a/chrome/browser/web_applications/os_integration/web_app_shortcut_win_unittest.cc
+++ b/chrome/browser/web_applications/os_integration/web_app_shortcut_win_unittest.cc
@@ -9,6 +9,7 @@
 
 #include "base/base_paths_win.h"
 #include "base/command_line.h"
+#include "base/containers/contains.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -113,8 +114,7 @@
   for (const auto& location : expected_locations) {
     ASSERT_TRUE(ShellUtil::GetShortcutPath(location, ShellUtil::CURRENT_USER,
                                            &expected_result));
-    EXPECT_NE(result.end(),
-              std::find(result.begin(), result.end(), expected_result));
+    EXPECT_TRUE(base::Contains(result, expected_result));
   }
 }
 
@@ -168,27 +168,19 @@
   std::vector<base::FilePath> result = FindAppShortcutsByProfileAndTitle(
       shortcut_dir, profile_path, base::WideToUTF16(shortcut_name));
   EXPECT_EQ(2u, result.size());
-  EXPECT_NE(result.end(),
-            std::find(result.begin(), result.end(), shortcut_path));
-  EXPECT_NE(result.end(),
-            std::find(result.begin(), result.end(), duplicate_shortcut_path));
-  EXPECT_EQ(result.end(),
-            std::find(result.begin(), result.end(), other_shortcut_path));
-  EXPECT_EQ(result.end(), std::find(result.begin(), result.end(),
-                                    other_profile_shortcut_path));
+  EXPECT_TRUE(base::Contains(result, shortcut_path));
+  EXPECT_TRUE(base::Contains(result, duplicate_shortcut_path));
+  EXPECT_FALSE(base::Contains(result, other_shortcut_path));
+  EXPECT_FALSE(base::Contains(result, other_profile_shortcut_path));
 
   // Find all shortcuts for |profile_name|. The shortcuts matching that profile
   // should be found.
   result = FindAppShortcutsByProfileAndTitle(shortcut_dir, profile_path, u"");
   EXPECT_EQ(3u, result.size());
-  EXPECT_NE(result.end(),
-            std::find(result.begin(), result.end(), shortcut_path));
-  EXPECT_NE(result.end(),
-            std::find(result.begin(), result.end(), duplicate_shortcut_path));
-  EXPECT_NE(result.end(),
-            std::find(result.begin(), result.end(), other_shortcut_path));
-  EXPECT_EQ(result.end(), std::find(result.begin(), result.end(),
-                                    other_profile_shortcut_path));
+  EXPECT_TRUE(base::Contains(result, shortcut_path));
+  EXPECT_TRUE(base::Contains(result, duplicate_shortcut_path));
+  EXPECT_TRUE(base::Contains(result, other_shortcut_path));
+  EXPECT_FALSE(base::Contains(result, other_profile_shortcut_path));
 }
 
 TEST_F(WebAppShortcutWinTest,
@@ -213,8 +205,7 @@
   std::vector<base::FilePath> result = FindAppShortcutsByProfileAndTitle(
       shortcut_dir, profile_path, base::WideToUTF16(shortcut_name));
   EXPECT_EQ(1u, result.size());
-  EXPECT_NE(result.end(),
-            std::find(result.begin(), result.end(), sanitized_shortcut_path));
+  EXPECT_TRUE(base::Contains(result, sanitized_shortcut_path));
 }
 
 TEST_F(WebAppShortcutWinTest, UpdatePlatformShortcuts) {
diff --git a/chrome/browser/web_applications/web_app_origin_association_manager_browsertest.cc b/chrome/browser/web_applications/web_app_origin_association_manager_browsertest.cc
index fb448d5..96e8e3b6 100644
--- a/chrome/browser/web_applications/web_app_origin_association_manager_browsertest.cc
+++ b/chrome/browser/web_applications/web_app_origin_association_manager_browsertest.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/web_applications/web_app_origin_association_manager.h"
 
+#include "base/containers/contains.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_feature_list.h"
@@ -154,12 +155,9 @@
         valid_and_invalid_app_url_handler_.origin,
         valid_and_invalid_app_url_handler_.has_origin_wildcard, {}, {});
 
-    auto search = std::find(result.begin(), result.end(),
-                            std::move(valid_app_url_handler));
-    EXPECT_NE(search, result.end());
-    search = std::find(result.begin(), result.end(),
-                       std::move(valid_and_invalid_app_url_handler));
-    EXPECT_NE(search, result.end());
+    EXPECT_TRUE(base::Contains(result, std::move(valid_app_url_handler)));
+    EXPECT_TRUE(
+        base::Contains(result, std::move(valid_and_invalid_app_url_handler)));
 
     if (callback_count_ == expected_callback_count) {
       callback_count_ = 0;
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/HybridListRenderer.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/HybridListRenderer.java
index 122e372..518cf00b 100644
--- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/HybridListRenderer.java
+++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/HybridListRenderer.java
@@ -31,28 +31,14 @@
      * @param viewport the ViewGroup containing the content. Views within the
      *   bounds of this ViewGroup will be considered for view actions. If null,
      *   the returned View will be used as the viewport.
-     * @return
-     */
-    @Nullable
-    @Deprecated
-    default View bind(ListContentManager manager, @Nullable ViewGroup viewport) {
-        return bind(manager);
-    }
-
-    /**
-     * Binds a contentmanager with this renderer.
-     *
-     * @param manager the ListContentManager responsible for populating views
-     * @param viewport the ViewGroup containing the content. Views within the
-     *   bounds of this ViewGroup will be considered for view actions. If null,
-     *   the returned View will be used as the viewport.
-     * @param shouldUseStaggeredLayout whether to use Staggered layout for list.
+     * @param shouldUseStaggeredLayout whether to use Staggered layout for list. Column count should
+     *         be set via ListLayoutHelper#setSpanCount()
      * @return
      */
     @Nullable
     default View bind(ListContentManager manager, @Nullable ViewGroup viewport,
             boolean shouldUseStaggeredLayout) {
-        return bind(manager, viewport);
+        return bind(manager);
     }
 
     /**
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListLayoutHelper.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListLayoutHelper.java
index bbce9a8..772a17f 100644
--- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListLayoutHelper.java
+++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListLayoutHelper.java
@@ -33,4 +33,7 @@
      * @param offset offset to scroll to.
      */
     default void scrollToPositionWithOffset(int position, int offset) {}
+
+    /** Sets column count for @{@link android.support.v7.widget.RecyclerView} */
+    default void setSpanCount(int spanCount) {}
 }
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt
index 2fbaf99..834a3d4 100644
--- a/chrome/build/mac-arm.pgo.txt
+++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@
-chrome-mac-arm-main-1664430926-7e44f606f9525df61b6d8fe5b8fc6241b8f661a0.profdata
+chrome-mac-arm-main-1664449577-1803ff180e1f8698996559eb4158c2410e264b50.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 1caf52bf..92f5ca2 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1664436148-caf914cc6c476fe4590762381347404774d1cd45.profdata
+chrome-win32-main-1664449577-4093277c63be38d510ae4afd4a154d6dafa782e7.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index f1f7edf..d6458da 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1664449577-ba6e8c2c5fa9f65aff5ad47d0ad9649cd7052eb9.profdata
+chrome-win64-main-1664463469-ca90e49fb32afa439b22d0bfbadae1d2d1a0211f.profdata
diff --git a/chrome/common/profiler/unwind_util.cc b/chrome/common/profiler/unwind_util.cc
index e628cfe..1582b7a 100644
--- a/chrome/common/profiler/unwind_util.cc
+++ b/chrome/common/profiler/unwind_util.cc
@@ -159,11 +159,16 @@
 // unwinders to work -- are available in the current context. Unwinder assets
 // are only embedded into certain builds of Chrome.
 bool AreUnwinderAssetsAvailable(version_info::Channel channel) {
+#if defined(OFFICIAL_BUILD) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
   // CFI is currently only embedded into dev, canary, and beta builds of Chrome:
   // https://crsrc.org/c/chrome/android/chrome_public_apk_tmpl.gni;l=30-36;drc=32cca7e9d8c49d42e393c75ffb404a0f8899704d
   return channel == version_info::Channel::CANARY ||
          channel == version_info::Channel::DEV ||
          channel == version_info::Channel::BETA;
+#else
+  // Local/CQ builds.
+  return true;
+#endif
 }
 
 // Manages installation of the module prerequisite for unwinding. Android, in
@@ -212,6 +217,16 @@
     version_info::Channel channel,
     UnwindPrerequisitesDelegate* prerequites_delegate) {
 #if ANDROID_ARM32_UNWINDING_SUPPORTED
+#if defined(OFFICIAL_BUILD) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
+  // Sometimes, DFMs can be installed even if not requested by Chrome
+  // explicitly (for instance, in some app stores). Therefore, even if the
+  // unwinder module is installed, we only consider it to be available for
+  // specific channels.
+  if (!(channel == version_info::Channel::CANARY ||
+        channel == version_info::Channel::DEV)) {
+    return false;
+  }
+#endif  // defined(OFFICIAL_BUILD) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
   ModuleUnwindPrerequisitesDelegate default_delegate;
   if (prerequites_delegate == nullptr) {
     prerequites_delegate = &default_delegate;
diff --git a/chrome/common/profiler/unwind_util_unittest.cc b/chrome/common/profiler/unwind_util_unittest.cc
index bcca4a4b..ede4cc4a 100644
--- a/chrome/common/profiler/unwind_util_unittest.cc
+++ b/chrome/common/profiler/unwind_util_unittest.cc
@@ -98,25 +98,34 @@
   } test_cases[] = {
     {version_info::Channel::CANARY, &true_mock_delegate, true},
     {version_info::Channel::DEV, &true_mock_delegate, true},
-    {version_info::Channel::BETA, &true_mock_delegate, true},
 #if BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_ARMEL) && \
     BUILDFLAG(ENABLE_ARM_CFI_TABLE)
     {version_info::Channel::CANARY, &false_mock_delegate, false},
     {version_info::Channel::DEV, &false_mock_delegate, false},
     {version_info::Channel::BETA, &false_mock_delegate, false},
-    {version_info::Channel::STABLE, &true_mock_delegate, false},
     {version_info::Channel::STABLE, &false_mock_delegate, false},
-    {version_info::Channel::UNKNOWN, &true_mock_delegate, false},
     {version_info::Channel::UNKNOWN, &false_mock_delegate, false},
-#else
+#if defined(OFFICIAL_BUILD) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
+    {version_info::Channel::BETA, &true_mock_delegate, false},
+    {version_info::Channel::STABLE, &true_mock_delegate, false},
+    {version_info::Channel::UNKNOWN, &true_mock_delegate, false},
+#else   // defined(OFFICIAL_BUILD) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
+    {version_info::Channel::BETA, &true_mock_delegate, true},
+    {version_info::Channel::STABLE, &true_mock_delegate, true},
+    {version_info::Channel::UNKNOWN, &true_mock_delegate, true},
+#endif  // defined(OFFICIAL_BUILD) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
+#else   // BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_ARMEL) &&
+        // BUILDFLAG(ENABLE_ARM_CFI_TABLE)
     {version_info::Channel::CANARY, &false_mock_delegate, true},
     {version_info::Channel::DEV, &false_mock_delegate, true},
+    {version_info::Channel::BETA, &true_mock_delegate, true},
     {version_info::Channel::BETA, &false_mock_delegate, true},
     {version_info::Channel::STABLE, &true_mock_delegate, true},
     {version_info::Channel::STABLE, &false_mock_delegate, true},
     {version_info::Channel::UNKNOWN, &true_mock_delegate, true},
     {version_info::Channel::UNKNOWN, &false_mock_delegate, true},
-#endif
+#endif  // BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_ARMEL) &&
+        // BUILDFLAG(ENABLE_ARM_CFI_TABLE)
   };
 
   for (const auto& test_case : test_cases) {
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 33499eb..e0fe5c2 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -5592,6 +5592,7 @@
     sources += [
       # The test is disabled for Android. The respective functionality is currently not being used on
       # Android. We should enable this test when Android becomes supported.
+      "../browser/metrics/power/battery_discharge_reporter_unittest.cc",
       "../browser/performance_manager/metrics/metrics_provider_unittest.cc",
       "../browser/policy/messaging_layer/util/reporting_server_connector_unittest.cc",
     ]
@@ -6421,6 +6422,7 @@
       "../browser/sharing/click_to_call/click_to_call_message_handler_android_unittest.cc",
       "../browser/sharing/optimization_guide/optimization_guide_message_handler_unittest.cc",
       "../browser/sharing/sms/sms_fetch_request_handler_unittest.cc",
+      "../browser/supervised_user/android/favicon_fetcher_unittest.cc",
       "../browser/touch_to_fill/touch_to_fill_controller_unittest.cc",
       "../browser/translate/android/translate_bridge_unittest.cc",
       "../browser/translate/translate_manager_render_view_host_android_unittest.cc",
diff --git a/chrome/test/base/in_process_browser_test_browsertest.cc b/chrome/test/base/in_process_browser_test_browsertest.cc
index c977d9f..cc751d43 100644
--- a/chrome/test/base/in_process_browser_test_browsertest.cc
+++ b/chrome/test/base/in_process_browser_test_browsertest.cc
@@ -119,8 +119,8 @@
   }
 };
 
-// TODO(https://crbug.com/1231009): Flaky / times out on windows and linux bots.
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
+// TODO(https://crbug.com/1231009): Flaky / times out on many bots.
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
 #define MAYBE_Test DISABLED_Test
 #else
 #define MAYBE_Test Test
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn
index d352e352..737241bd 100644
--- a/chrome/test/data/webui/BUILD.gn
+++ b/chrome/test/data/webui/BUILD.gn
@@ -295,10 +295,7 @@
 }
 
 group("closure_compile") {
-  deps = [
-    ":closure_compile_local",
-    "inline_login:closure_compile",
-  ]
+  deps = [ ":closure_compile_local" ]
   if (is_chromeos_ash) {
     deps += [
       "chromeos:closure_compile",
diff --git a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/activation_code_page_test.js b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/activation_code_page_test.js
index 8aef5af7e..905bb9d 100644
--- a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/activation_code_page_test.js
+++ b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/activation_code_page_test.js
@@ -53,14 +53,13 @@
         FakeBarcodeDetector, FakeImageCapture, setIntervalFunction,
         playVideoFunction, stopStreamFunction);
     document.body.appendChild(activationCodePage);
-    flush();
+    await flushAsync();
 
     mediaDevices = new FakeMediaDevices();
-    mediaDevices.addDevice();
     activationCodePage.setMediaDevices(mediaDevices);
-    mediaDevices.resolveEnumerateDevices();
-    await waitAfterNextRender(activationCodePage);
-    flush();
+    await flushAsync();
+
+    await addMediaDevice();
   });
 
   teardown(function() {
@@ -68,8 +67,25 @@
     FakeBarcodeDetector.setShouldFail(false);
   });
 
-  test('UI states', async function() {
+  async function addMediaDevice() {
+    mediaDevices.addDevice();
     await flushAsync();
+
+    await resolveEnumeratedDevicesPromise();
+  }
+
+  async function resolveEnumeratedDevicesPromise() {
+    let resolver;
+    const enumerateDeviceResolvedPromise = new Promise((resolve, reject) => {
+      resolver = resolve;
+    });
+    mediaDevices.resolveEnumerateDevices(function() {
+      resolver();
+    });
+    await enumerateDeviceResolvedPromise;
+  }
+
+  test('UI states', async function() {
     let qrCodeDetectorContainer = activationCodePage.$$('#esimQrCodeDetection');
     const activationCodeContainer =
         activationCodePage.$$('#activationCodeContainer');
@@ -108,7 +124,7 @@
     // Click the start scanning button.
     startScanningButton.click();
     mediaDevices.resolveGetUserMedia();
-    await waitAfterNextRender(activationCodePage);
+    await flushAsync();
 
     // The video should be visible and start scanning UI hidden.
     assertFalse(video.hidden);
@@ -154,8 +170,7 @@
 
     // Mock, no media devices present
     mediaDevices.removeDevice();
-    mediaDevices.resolveEnumerateDevices();
-    await waitAfterNextRender(activationCodePage);
+    await resolveEnumeratedDevicesPromise();
 
     // When no camera device is present qrCodeDetector container should
     // not be shown
@@ -164,9 +179,7 @@
     assertFalse(!!qrCodeDetectorContainer);
   });
 
-  // TODO(b/247881851) Disable flaky test. Renable when test is fixed.
-  test.skip('Switch camera button states', async function() {
-    await flushAsync();
+  test('Switch camera button states', async function() {
     const video = activationCodePage.$$('#video');
     const startScanningButton = activationCodePage.$$('#startScanningButton');
     const switchCameraButton = activationCodePage.$$('#switchCameraButton');
@@ -182,7 +195,7 @@
     // Click the start scanning button.
     startScanningButton.click();
     mediaDevices.resolveGetUserMedia();
-    await waitAfterNextRender(activationCodePage);
+    await flushAsync();
 
     // The video should be visible and switch camera button hidden.
     assertFalse(video.hidden);
@@ -190,9 +203,7 @@
     assertTrue(mediaDevices.isStreamingUserFacingCamera);
 
     // Add a new video device.
-    mediaDevices.addDevice();
-    mediaDevices.resolveEnumerateDevices();
-    await waitAfterNextRender(activationCodePage);
+    await addMediaDevice();
 
     // The switch camera button should now be visible.
     assertFalse(switchCameraButton.hidden);
@@ -200,7 +211,7 @@
 
     switchCameraButton.click();
     mediaDevices.resolveGetUserMedia();
-    await waitAfterNextRender(activationCodePage);
+    await flushAsync();
 
     // The second device should now be streaming.
     assertFalse(mediaDevices.isStreamingUserFacingCamera);
@@ -209,7 +220,7 @@
     // Switch back.
     switchCameraButton.click();
     mediaDevices.resolveGetUserMedia();
-    await waitAfterNextRender(activationCodePage);
+    await flushAsync();
 
     // The first device should be streaming again.
     assertTrue(mediaDevices.isStreamingUserFacingCamera);
@@ -218,15 +229,14 @@
     // Switch to the second device again.
     switchCameraButton.click();
     mediaDevices.resolveGetUserMedia();
-    await waitAfterNextRender(activationCodePage);
+    await flushAsync();
 
     assertFalse(mediaDevices.isStreamingUserFacingCamera);
     assertFalse(switchCameraButton.hidden);
 
     // Disconnect the second device.
     mediaDevices.removeDevice();
-    mediaDevices.resolveEnumerateDevices();
-    await waitAfterNextRender(activationCodePage);
+    await resolveEnumeratedDevicesPromise();
 
     // The first device should now be streaming and the switch camera button
     // hidden.
@@ -241,7 +251,6 @@
   });
 
   test('UI is disabled when showBusy property is set', async function() {
-    await flushAsync();
     const startScanningButton = activationCodePage.$$('#startScanningButton');
     const switchCameraButton = activationCodePage.$$('#switchCameraButton');
     const tryAgainButton = activationCodePage.$$('#tryAgainButton');
@@ -268,7 +277,6 @@
   test(
       'Do not show qrContainer when BarcodeDetector is not ready',
       async function() {
-        await flushAsync();
         let qrCodeDetectorContainer =
             activationCodePage.$$('#esimQrCodeDetection');
 
@@ -291,7 +299,6 @@
       });
 
   test('Event is fired when enter is pressed on input', async function() {
-    await flushAsync();
     let eventFired = false;
     activationCodePage.addEventListener('forward-navigation-requested', () => {
       eventFired = true;
@@ -306,7 +313,6 @@
   test(
       'Install error after manual entry should show error on input',
       async function() {
-        await flushAsync();
         const input = activationCodePage.$$('#activationCode');
         const startScanningContainer =
             activationCodePage.$$('#startScanningContainer');
@@ -329,7 +335,6 @@
   test(
       'Install error after scanning should show error on camera',
       async function() {
-        await flushAsync();
         const input = activationCodePage.$$('#activationCode');
         const startScanningContainer =
             activationCodePage.$$('#startScanningContainer');
@@ -384,7 +389,6 @@
       });
 
   test('Tabbing does not close video stream', async function() {
-    await flushAsync();
     const startScanningButton = activationCodePage.$$('#startScanningButton');
     const getVideo = () => activationCodePage.$$('#video');
     const input = activationCodePage.$$('#activationCode');
@@ -416,7 +420,6 @@
 
   test(
       'Clear qr code detection timeout when video is hidden', async function() {
-        await flushAsync();
         const startScanningButton =
             activationCodePage.$$('#startScanningButton');
         const getVideo = () => activationCodePage.$$('#video');
@@ -441,7 +444,6 @@
       });
 
   test('Input entered manually is validated', async function() {
-    await flushAsync();
     const input = activationCodePage.$$('#activationCode');
     assertTrue(!!input);
     assertFalse(input.invalid);
@@ -496,7 +498,6 @@
   });
 
   test('Scanned code is validated', async function() {
-    await flushAsync();
     const input = activationCodePage.$$('#activationCode');
     const startScanningContainer =
         activationCodePage.$$('#startScanningContainer');
diff --git a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/fake_media_devices.js b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/fake_media_devices.js
index e08e082..3f30167 100644
--- a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/fake_media_devices.js
+++ b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/fake_media_devices.js
@@ -31,11 +31,13 @@
 
   /**
    * Resolves promise returned from enumerateDevices().
+   * @param {?function()} callback
    */
-  resolveEnumerateDevices() {
+  resolveEnumerateDevices(callback) {
     assertTrue(
         !!this.enumerateDevicesResolver_, 'enumerateDevices was not called');
     this.enumerateDevicesResolver_(this.devices_);
+    callback();
   }
 
   /** @override */
diff --git a/chrome/test/data/webui/inline_login/BUILD.gn b/chrome/test/data/webui/inline_login/BUILD.gn
index 04e610d..5caa9a4 100644
--- a/chrome/test/data/webui/inline_login/BUILD.gn
+++ b/chrome/test/data/webui/inline_login/BUILD.gn
@@ -2,7 +2,6 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//third_party/closure_compiler/compile_js.gni")
 import("//tools/grit/preprocess_if_expr.gni")
 import("//ui/webui/resources/tools/generate_grd.gni")
 
@@ -31,105 +30,3 @@
   manifest_files = [ "$target_gen_dir/preprocessed_manifest.json" ]
   resource_path_prefix = "inline_login"
 }
-
-js_type_check("closure_compile") {
-  is_polymer3 = true
-  closure_flags = default_closure_args + [
-                    "browser_resolver_prefix_replacements=\"chrome://chrome-signin/gaia_auth_host/=" + rebase_path(
-                            "//chrome/browser/resources/gaia_auth_host/",
-                            root_build_dir) + "\"",
-                    "browser_resolver_prefix_replacements=\"chrome://chrome-signin/arc_account_picker/=" + rebase_path(
-                            "//chrome/browser/resources/chromeos/arc_account_picker/",
-                            root_build_dir) + "\"",
-                    "browser_resolver_prefix_replacements=\"chrome://chrome-signin/=" + rebase_path(
-                            "//chrome/browser/resources/inline_login/",
-                            root_build_dir) + "\"",
-                    "browser_resolver_prefix_replacements=\"chrome://webui-test/=./gen/chrome/test/data/webui/tsc\"",
-                    "js_module_root=" + rebase_path("//chrome/test/data/webui/",
-                                                    root_build_dir),
-                    "js_module_root=./gen/chrome/test/data/webui/",
-                    "js_module_root=" +
-                        rebase_path("//chrome/browser/resources/",
-                                    root_build_dir),
-                    "js_module_root=./gen/chrome/browser/resources/",
-                    "js_module_root=" +
-                        rebase_path("//chrome/browser/resources/inline_login/",
-                                    root_build_dir),
-                    "js_module_root=./gen/chrome/browser/resources/inline_login/",
-                    "js_module_root=./gen/chrome/browser/resources/inline_login/preprocessed/",
-                  ]
-  deps = [
-    ":inline_login_test",
-    ":inline_login_test_util",
-  ]
-  if (is_chromeos_ash) {
-    deps += [
-      ":arc_account_picker_page_test",
-      ":inline_login_signin_blocked_by_policy_page_test",
-      ":inline_login_welcome_page_test",
-    ]
-  }
-}
-
-js_library("inline_login_test") {
-  deps = [
-    ":inline_login_test_util",
-    "..:test_util",
-    "//chrome/browser/resources/inline_login:inline_login_app",
-    "//ui/webui/resources/js:assert",
-    "//ui/webui/resources/js:load_time_data.m",
-  ]
-  externs_list = [ "$externs_path/mocha-2.5.js" ]
-}
-
-if (is_chromeos_ash) {
-  js_library("inline_login_welcome_page_test") {
-    deps = [
-      ":inline_login_test_util",
-      "..:test_util",
-      "//chrome/browser/resources/inline_login:inline_login_app",
-      "//ui/webui/resources/js:assert",
-      "//ui/webui/resources/js:load_time_data.m",
-    ]
-    externs_list = [ "$externs_path/mocha-2.5.js" ]
-  }
-
-  js_library("inline_login_signin_blocked_by_policy_page_test") {
-    deps = [
-      ":inline_login_test_util",
-      "..:test_util",
-      "//chrome/browser/resources/inline_login:inline_login_app",
-      "//ui/webui/resources/js:assert",
-      "//ui/webui/resources/js:load_time_data.m",
-    ]
-    externs_list = [ "$externs_path/mocha-2.5.js" ]
-  }
-
-  js_library("arc_account_picker_page_test") {
-    deps = [
-      ":inline_login_test_util",
-      "..:test_util",
-      "../chromeos/arc_account_picker:test_util",
-      "//chrome/browser/resources/inline_login:inline_login_app",
-      "//ui/webui/resources/js:assert",
-      "//ui/webui/resources/js:load_time_data.m",
-    ]
-    externs_list = [ "$externs_path/mocha-2.5.js" ]
-  }
-}
-
-js_library("inline_login_test_util") {
-  sources = [ "$target_gen_dir/inline_login_test_util.js" ]
-  deps = [
-    "..:test_browser_proxy",
-    "//chrome/browser/resources/gaia_auth_host:authenticator",
-    "//chrome/browser/resources/inline_login:inline_login_browser_proxy",
-    "//ui/webui/resources/js/cr:event_target",
-  ]
-  if (is_chromeos_ash) {
-    deps += [
-      "//chrome/browser/resources/chromeos/arc_account_picker:arc_util",
-    ]
-  }
-  extra_deps = [ ":preprocess" ]
-}
diff --git a/chrome/test/data/webui/inline_login/arc_account_picker_page_test.js b/chrome/test/data/webui/inline_login/arc_account_picker_page_test.js
index 3763393..d4f99de 100644
--- a/chrome/test/data/webui/inline_login/arc_account_picker_page_test.js
+++ b/chrome/test/data/webui/inline_login/arc_account_picker_page_test.js
@@ -61,7 +61,7 @@
 
     testBrowserProxy = new TestInlineLoginBrowserProxy();
     testBrowserProxy.setDialogArguments(dialogArgs);
-    InlineLoginBrowserProxyImpl.instance_ = testBrowserProxy;
+    InlineLoginBrowserProxyImpl.setInstance(testBrowserProxy);
 
     testArcBrowserProxy = new TestArcAccountPickerBrowserProxy();
     testArcBrowserProxy.setAccountsNotAvailableInArc(accountsNotAvailableInArc);
diff --git a/chrome/test/data/webui/inline_login/inline_login_signin_blocked_by_policy_page_test.js b/chrome/test/data/webui/inline_login/inline_login_signin_blocked_by_policy_page_test.js
index ac7b734..5ab7ab39 100644
--- a/chrome/test/data/webui/inline_login/inline_login_signin_blocked_by_policy_page_test.js
+++ b/chrome/test/data/webui/inline_login/inline_login_signin_blocked_by_policy_page_test.js
@@ -61,7 +61,7 @@
     document.body.innerHTML = '';
     testBrowserProxy = new TestInlineLoginBrowserProxy();
     testBrowserProxy.setDialogArguments(dialogArgs);
-    InlineLoginBrowserProxyImpl.instance_ = testBrowserProxy;
+    InlineLoginBrowserProxyImpl.setInstance(testBrowserProxy);
     document.body.innerHTML = '';
     inlineLoginComponent = /** @type {InlineLoginAppElement} */ (
         document.createElement('inline-login-app'));
diff --git a/chrome/test/data/webui/inline_login/inline_login_test.js b/chrome/test/data/webui/inline_login/inline_login_test.js
index afb504a..9eab4b4 100644
--- a/chrome/test/data/webui/inline_login/inline_login_test.js
+++ b/chrome/test/data/webui/inline_login/inline_login_test.js
@@ -56,7 +56,7 @@
   setup(() => {
     document.body.innerHTML = '';
     testBrowserProxy = new TestInlineLoginBrowserProxy();
-    InlineLoginBrowserProxyImpl.instance_ = testBrowserProxy;
+    InlineLoginBrowserProxyImpl.setInstance(testBrowserProxy);
     document.body.innerHTML = '';
     inlineLoginComponent = /** @type {InlineLoginAppElement} */ (
         document.createElement('inline-login-app'));
diff --git a/chrome/test/data/webui/inline_login/inline_login_test_util.js b/chrome/test/data/webui/inline_login/inline_login_test_util.js
index c7c0d7b..c832fd09 100644
--- a/chrome/test/data/webui/inline_login/inline_login_test_util.js
+++ b/chrome/test/data/webui/inline_login/inline_login_test_util.js
@@ -7,7 +7,6 @@
 // </if>
 
 import {AuthMode, AuthParams} from 'chrome://chrome-signin/gaia_auth_host/authenticator.js';
-import {InlineLoginBrowserProxy} from 'chrome://chrome-signin/inline_login_browser_proxy.js';
 import {NativeEventTarget as EventTarget} from 'chrome://resources/js/cr/event_target.js';
 
 import {TestBrowserProxy} from '../test_browser_proxy.js';
diff --git a/chrome/test/data/webui/inline_login/inline_login_welcome_page_test.js b/chrome/test/data/webui/inline_login/inline_login_welcome_page_test.js
index f8fa81b..0b48424 100644
--- a/chrome/test/data/webui/inline_login/inline_login_welcome_page_test.js
+++ b/chrome/test/data/webui/inline_login/inline_login_welcome_page_test.js
@@ -4,11 +4,10 @@
 
 import 'chrome://chrome-signin/inline_login_app.js';
 
-import {AccountAdditionOptions} from 'chrome://chrome-signin/arc_account_picker/arc_util.js';
 import {InlineLoginAppElement, View} from 'chrome://chrome-signin/inline_login_app.js';
 import {InlineLoginBrowserProxyImpl} from 'chrome://chrome-signin/inline_login_browser_proxy.js';
 import {assert} from 'chrome://resources/js/assert.js';
-import {isChromeOS, webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
+import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js';
@@ -56,7 +55,7 @@
     document.body.innerHTML = '';
     testBrowserProxy = new TestInlineLoginBrowserProxy();
     testBrowserProxy.setDialogArguments(dialogArgs);
-    InlineLoginBrowserProxyImpl.instance_ = testBrowserProxy;
+    InlineLoginBrowserProxyImpl.setInstance(testBrowserProxy);
     document.body.innerHTML = '';
     inlineLoginComponent = /** @type {InlineLoginAppElement} */ (
         document.createElement('inline-login-app'));
diff --git a/chrome/test/data/webui/new_tab_page/app_test.ts b/chrome/test/data/webui/new_tab_page/app_test.ts
index 8531b62..d54d016 100644
--- a/chrome/test/data/webui/new_tab_page/app_test.ts
+++ b/chrome/test/data/webui/new_tab_page/app_test.ts
@@ -380,6 +380,38 @@
       await callbackRouterRemote.$.flushForTesting();
       assertTrue(mostVisited.hasAttribute('is-dark_'));
     });
+
+    [true, false].forEach((isDark) => {
+      test(
+          `OGB light mode whenever background image
+          (ignoring dark mode) isDark: ${isDark}`,
+          async () => {
+            // Act.
+
+            // Create a theme with a custom background.
+            const theme = createTheme(isDark);
+            theme.backgroundImage = createBackgroundImage('https://foo.com');
+            callbackRouterRemote.setTheme(theme);
+            await callbackRouterRemote.$.flushForTesting();
+
+            // Notify the NTP that the ogb has loaded.
+            window.dispatchEvent(new MessageEvent('message', {
+              data: {
+                frameType: 'one-google-bar',
+                messageType: 'loaded',
+              },
+              source: window,
+              origin: window.origin,
+            }));
+
+            // Assert.
+            assertEquals(1, windowProxy.getCallCount('postMessage'));
+            const [_, {type, applyLightTheme}] =
+                windowProxy.getArgs('postMessage')[0];
+            assertEquals('updateAppearance', type);
+            assertEquals(true, applyLightTheme);
+          });
+    });
   });
 
   suite('promo', () => {
diff --git a/chrome/test/data/webui/settings/privacy_page_test.ts b/chrome/test/data/webui/settings/privacy_page_test.ts
index c25e9a27..d01743d 100644
--- a/chrome/test/data/webui/settings/privacy_page_test.ts
+++ b/chrome/test/data/webui/settings/privacy_page_test.ts
@@ -52,7 +52,7 @@
   // routes which depend on flags being enabled.
   // routes.SITE_SETTINGS_BLUETOOTH_SCANNING,
   // routes.SITE_SETTINGS_BLUETOOTH_DEVICES,
-  // routes.SITE_SETTINGS_WINDOW_PLACEMENT,
+  // routes.SITE_SETTINGS_WINDOW_MANAGEMENT,
 
   // Doesn't contain toggle or radio buttons
   // routes.SITE_SETTINGS_INSECURE_CONTENT,
diff --git a/chrome/test/data/webui/settings/site_details_tests.ts b/chrome/test/data/webui/settings/site_details_tests.ts
index dc20176..9a18e61 100644
--- a/chrome/test/data/webui/settings/site_details_tests.ts
+++ b/chrome/test/data/webui/settings/site_details_tests.ts
@@ -150,7 +150,7 @@
               ContentSettingsTypes.VR,
               [createRawSiteException('https://foo.com:443')]),
           createContentSettingTypeToValuePair(
-              ContentSettingsTypes.WINDOW_PLACEMENT,
+              ContentSettingsTypes.WINDOW_MANAGEMENT,
               [createRawSiteException('https://foo.com:443')]),
           createContentSettingTypeToValuePair(
               ContentSettingsTypes.LOCAL_FONTS,
diff --git a/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.ts b/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.ts
index 9c34902..b2f37c3 100644
--- a/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.ts
+++ b/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.ts
@@ -103,7 +103,7 @@
       ContentSettingsTypes.SOUND,
       ContentSettingsTypes.USB_DEVICES,
       ContentSettingsTypes.VR,
-      ContentSettingsTypes.WINDOW_PLACEMENT,
+      ContentSettingsTypes.WINDOW_MANAGEMENT,
     ];
 
     this.prefs_ = createSiteSettingsPrefs([], [], []);
diff --git a/chrome/updater/BUILD.gn b/chrome/updater/BUILD.gn
index b3961e8..125dc5a 100644
--- a/chrome/updater/BUILD.gn
+++ b/chrome/updater/BUILD.gn
@@ -422,6 +422,8 @@
       "-e",
       "BROWSER_NAME=\"$browser_name\"",
       "-e",
+      "BROWSER_PRODUCT_NAME=\"$browser_product_name\"",
+      "-e",
       "COMPANY_FULLNAME=\"$updater_company_full_name\"",
       "-e",
       "COMPANY_SHORTNAME=\"$updater_company_short_name\"",
diff --git a/chrome/updater/mac/privileged_helper/Info.plist b/chrome/updater/mac/privileged_helper/Info.plist
index 7584c7d..184d823 100644
--- a/chrome/updater/mac/privileged_helper/Info.plist
+++ b/chrome/updater/mac/privileged_helper/Info.plist
@@ -17,6 +17,9 @@
 	<key>SMAuthorizedClients</key>
 	<array>
 		<string>identifier "${BROWSER_BUNDLE_IDENTIFIER}"</string>
+		<string>identifier "${BROWSER_BUNDLE_IDENTIFIER}.beta"</string>
+		<string>identifier "${BROWSER_BUNDLE_IDENTIFIER}.canary"</string>
+		<string>identifier "${BROWSER_BUNDLE_IDENTIFIER}.dev"</string>
 	</array>
 </dict>
 </plist>
diff --git a/chrome/updater/mac/privileged_helper/service.mm b/chrome/updater/mac/privileged_helper/service.mm
index 7fd1138b..ce492d3 100644
--- a/chrome/updater/mac/privileged_helper/service.mm
+++ b/chrome/updater/mac/privileged_helper/service.mm
@@ -119,8 +119,9 @@
 namespace updater {
 namespace {
 
-constexpr base::FilePath::CharType kFrameworksPath[] = FILE_PATH_LITERAL(
-    "Contents/Frameworks/" BROWSER_NAME_STRING " Framework.framework/Helpers");
+constexpr base::FilePath::CharType kFrameworksPath[] =
+    FILE_PATH_LITERAL("Contents/Frameworks/" BROWSER_PRODUCT_NAME_STRING
+                      " Framework.framework/Helpers");
 constexpr base::FilePath::CharType kProductBundleName[] =
     FILE_PATH_LITERAL(PRODUCT_FULLNAME_STRING ".app");
 constexpr int kPermissionsMask = base::FILE_PERMISSION_USER_MASK |
diff --git a/chrome/updater/updater_branding.h.in b/chrome/updater/updater_branding.h.in
index 08f9afea..1553325 100644
--- a/chrome/updater/updater_branding.h.in
+++ b/chrome/updater/updater_branding.h.in
@@ -4,6 +4,7 @@
 
 // Branding Information
 #define BROWSER_NAME_STRING "@BROWSER_NAME@"
+#define BROWSER_PRODUCT_NAME_STRING "@BROWSER_PRODUCT_NAME@"
 #define COMPANY_SHORTNAME_STRING "@COMPANY_SHORTNAME@"
 #define CRASH_UPLOAD_URL "@CRASH_UPLOAD_URL@"
 #define CRASH_PRODUCT_NAME "@CRASH_PRODUCT_NAME@"
diff --git a/chromeos/ash/components/device_activity/OWNERS b/chromeos/ash/components/device_activity/OWNERS
index 9a6e935..107f230b 100644
--- a/chromeos/ash/components/device_activity/OWNERS
+++ b/chromeos/ash/components/device_activity/OWNERS
@@ -1,3 +1,2 @@
 hirthanan@google.com
-karkhedkar@google.com
 qianwan@google.com
diff --git a/chromeos/ash/components/network/onc/network_onc_utils.cc b/chromeos/ash/components/network/onc/network_onc_utils.cc
index 7249f0b..5ed9971 100644
--- a/chromeos/ash/components/network/onc/network_onc_utils.cc
+++ b/chromeos/ash/components/network/onc/network_onc_utils.cc
@@ -369,7 +369,7 @@
   return NetworkTypePattern::Default();
 }
 
-base::Value ConvertOncProxySettingsToProxyConfig(
+base::Value::Dict ConvertOncProxySettingsToProxyConfig(
     const base::Value& onc_proxy_settings) {
   std::string type = GetString(onc_proxy_settings, ::onc::proxy::kType);
 
@@ -390,7 +390,7 @@
         onc_proxy_settings.FindKey(::onc::proxy::kManual);
     if (!manual_dict) {
       NET_LOG(ERROR) << "Manual proxy missing dictionary";
-      return base::Value();
+      return base::Value::Dict();
     }
     std::string manual_spec;
     AppendProxyServerForScheme(*manual_dict, ::onc::proxy::kFtp, &manual_spec);
@@ -409,7 +409,7 @@
                                                      bypass_rules.ToString());
   }
   NOTREACHED();
-  return base::Value();
+  return base::Value::Dict();
 }
 
 base::Value ConvertProxyConfigToOncProxySettings(
@@ -417,7 +417,7 @@
   DCHECK(proxy_config_value.is_dict());
 
   // Create a ProxyConfigDictionary from the dictionary.
-  ProxyConfigDictionary proxy_config(proxy_config_value.Clone());
+  ProxyConfigDictionary proxy_config(proxy_config_value.GetDict().Clone());
 
   // Create the result Value and populate it.
   base::Value proxy_settings(base::Value::Type::DICTIONARY);
diff --git a/chromeos/ash/components/network/onc/network_onc_utils.h b/chromeos/ash/components/network/onc/network_onc_utils.h
index 7a207ea7..c9599ab 100644
--- a/chromeos/ash/components/network/onc/network_onc_utils.h
+++ b/chromeos/ash/components/network/onc/network_onc_utils.h
@@ -13,6 +13,7 @@
 #include "base/component_export.h"
 #include "base/containers/flat_map.h"
 #include "base/memory/ref_counted.h"
+#include "base/values.h"
 #include "chromeos/ash/components/network/network_type_pattern.h"
 #include "chromeos/components/onc/variable_expander.h"
 #include "components/onc/onc_constants.h"
@@ -20,10 +21,6 @@
 
 class PrefService;
 
-namespace base {
-class Value;
-}
-
 namespace chromeos::onc {
 struct OncValueSignature;
 }
@@ -45,7 +42,7 @@
 // Translates |onc_proxy_settings|, which must be a valid ONC ProxySettings
 // dictionary, to a ProxyConfig dictionary (see proxy_config_dictionary.h).
 COMPONENT_EXPORT(CHROMEOS_NETWORK)
-base::Value ConvertOncProxySettingsToProxyConfig(
+base::Value::Dict ConvertOncProxySettingsToProxyConfig(
     const base::Value& onc_proxy_settings);
 
 // Translates |proxy_config_value|, which must be a valid ProxyConfig dictionary
diff --git a/chromeos/ash/components/network/onc/network_onc_utils_unittest.cc b/chromeos/ash/components/network/onc/network_onc_utils_unittest.cc
index 5f1bd2e..f5245a1 100644
--- a/chromeos/ash/components/network/onc/network_onc_utils_unittest.cc
+++ b/chromeos/ash/components/network/onc/network_onc_utils_unittest.cc
@@ -46,10 +46,9 @@
         test_case.FindKey("ONC_ProxySettings");
     ASSERT_TRUE(onc_proxy_settings);
 
-    base::Value actual_proxy_config =
+    base::Value::Dict actual_proxy_config =
         ConvertOncProxySettingsToProxyConfig(*onc_proxy_settings);
-    EXPECT_TRUE(
-        test_utils::Equals(expected_proxy_config, &actual_proxy_config));
+    EXPECT_EQ(*expected_proxy_config, actual_proxy_config);
   }
 }
 
diff --git a/chromeos/ash/components/network/onc/onc_translator_onc_to_shill.cc b/chromeos/ash/components/network/onc/onc_translator_onc_to_shill.cc
index 41b17c4..5436d78 100644
--- a/chromeos/ash/components/network/onc/onc_translator_onc_to_shill.cc
+++ b/chromeos/ash/components/network/onc/onc_translator_onc_to_shill.cc
@@ -468,7 +468,7 @@
   const base::Value* proxy_settings =
       onc_object_->FindDictKey(::onc::network_config::kProxySettings);
   if (proxy_settings) {
-    base::Value proxy_config =
+    base::Value::Dict proxy_config =
         ConvertOncProxySettingsToProxyConfig(*proxy_settings);
     std::string proxy_config_str;
     base::JSONWriter::Write(proxy_config, &proxy_config_str);
diff --git a/chromeos/ash/components/network/proxy/proxy_config_handler.cc b/chromeos/ash/components/network/proxy/proxy_config_handler.cc
index a36d335f..d3a661d7 100644
--- a/chromeos/ash/components/network/proxy/proxy_config_handler.cc
+++ b/chromeos/ash/components/network/proxy/proxy_config_handler.cc
@@ -88,7 +88,7 @@
   const base::Value& value = network.proxy_config();
   if (value.is_none())
     return nullptr;
-  return std::make_unique<ProxyConfigDictionary>(value.Clone());
+  return std::make_unique<ProxyConfigDictionary>(value.GetDict().Clone());
 }
 
 void SetProxyConfigForNetwork(const ProxyConfigDictionary& proxy_config,
diff --git a/chromeos/ash/components/network/proxy/proxy_config_service_impl.cc b/chromeos/ash/components/network/proxy/proxy_config_service_impl.cc
index 60d3e96b..a72f0b77 100644
--- a/chromeos/ash/components/network/proxy/proxy_config_service_impl.cc
+++ b/chromeos/ash/components/network/proxy/proxy_config_service_impl.cc
@@ -191,7 +191,8 @@
     const PrefService::Preference* const pref =
         profile_prefs->FindPreference(::proxy_config::prefs::kProxy);
     DCHECK(pref->GetValue() && pref->GetValue()->is_dict());
-    return std::make_unique<ProxyConfigDictionary>(pref->GetValue()->Clone());
+    return std::make_unique<ProxyConfigDictionary>(
+        pref->GetValue()->GetDict().Clone());
   }
 
   const NetworkState* network =
diff --git a/chromeos/ash/components/network/proxy/ui_proxy_config_service_unittest.cc b/chromeos/ash/components/network/proxy/ui_proxy_config_service_unittest.cc
index d18c7712..29910ad 100644
--- a/chromeos/ash/components/network/proxy/ui_proxy_config_service_unittest.cc
+++ b/chromeos/ash/components/network/proxy/ui_proxy_config_service_unittest.cc
@@ -211,11 +211,9 @@
 TEST_F(UIProxyConfigServiceTest, ExtensionProxyNotMergedForUnconfiguredNetork) {
   std::unique_ptr<UIProxyConfigService> service = CreateServiceOffLocalState();
 
-  base::Value extension_prefs_config =
-      ProxyConfigDictionary::CreatePacScript("http://pac/script.pac", true);
   user_prefs_.SetExtensionPref(
       proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+      ProxyConfigDictionary::CreatePacScript("http://pac/script.pac", true));
 
   base::Value::Dict config;
   EXPECT_FALSE(
@@ -396,11 +394,9 @@
 TEST_F(UIProxyConfigServiceTest, PacExtensionPref) {
   std::unique_ptr<UIProxyConfigService> service = CreateServiceForUser();
 
-  base::Value extension_prefs_config =
-      ProxyConfigDictionary::CreatePacScript("http://pac/script.pac", true);
   user_prefs_.SetExtensionPref(
       proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+      ProxyConfigDictionary::CreatePacScript("http://pac/script.pac", true));
 
   base::Value::Dict config;
   EXPECT_TRUE(service->MergeEnforcedProxyConfig(kTestUserWifiGuid, &config));
@@ -419,11 +415,8 @@
 TEST_F(UIProxyConfigServiceTest, AutoDetectExtensionPref) {
   std::unique_ptr<UIProxyConfigService> service = CreateServiceForUser();
 
-  base::Value extension_prefs_config =
-      ProxyConfigDictionary::CreateAutoDetect();
-  user_prefs_.SetExtensionPref(
-      proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+  user_prefs_.SetExtensionPref(proxy_config::prefs::kProxy,
+                               ProxyConfigDictionary::CreateAutoDetect());
 
   base::Value::Dict config;
   EXPECT_TRUE(service->MergeEnforcedProxyConfig(kTestUserWifiGuid, &config));
@@ -439,10 +432,8 @@
 TEST_F(UIProxyConfigServiceTest, DirectExtensionPref) {
   std::unique_ptr<UIProxyConfigService> service = CreateServiceForUser();
 
-  base::Value extension_prefs_config = ProxyConfigDictionary::CreateDirect();
-  user_prefs_.SetExtensionPref(
-      proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+  user_prefs_.SetExtensionPref(proxy_config::prefs::kProxy,
+                               ProxyConfigDictionary::CreateDirect());
 
   base::Value::Dict config;
   EXPECT_TRUE(service->MergeEnforcedProxyConfig(kTestUserWifiGuid, &config));
@@ -458,12 +449,10 @@
 TEST_F(UIProxyConfigServiceTest, ManualExtensionPref) {
   std::unique_ptr<UIProxyConfigService> service = CreateServiceForUser();
 
-  base::Value extension_prefs_config =
-      ProxyConfigDictionary::CreateFixedServers(
-          "http=proxy1:81;https=proxy2:82;socks=proxy3:81", "localhost");
   user_prefs_.SetExtensionPref(
       proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+      ProxyConfigDictionary::CreateFixedServers(
+          "http=proxy1:81;https=proxy2:82;socks=proxy3:81", "localhost"));
 
   base::Value::Dict config;
   EXPECT_TRUE(service->MergeEnforcedProxyConfig(kTestUserWifiGuid, &config));
@@ -494,11 +483,9 @@
 TEST_F(UIProxyConfigServiceTest, ExtensionProxyOverridesDefault) {
   std::unique_ptr<UIProxyConfigService> service = CreateServiceForUser();
 
-  base::Value extension_prefs_config = ProxyConfigDictionary::CreatePacScript(
-      "http://extension/script.pac", true);
-  user_prefs_.SetExtensionPref(
-      proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+  user_prefs_.SetExtensionPref(proxy_config::prefs::kProxy,
+                               ProxyConfigDictionary::CreatePacScript(
+                                   "http://extension/script.pac", true));
 
   std::string config_json = base::ReplaceStringPlaceholders(
       R"({"Type": $1, "PAC": $2})",
@@ -532,11 +519,8 @@
                              ProxyConfigDictionary::CreatePacScript(
                                  "http://managed/script.pac", true));
 
-  base::Value extension_prefs_config =
-      ProxyConfigDictionary::CreateAutoDetect();
-  user_prefs_.SetExtensionPref(
-      proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+  user_prefs_.SetExtensionPref(proxy_config::prefs::kProxy,
+                               ProxyConfigDictionary::CreateAutoDetect());
 
   base::Value::Dict config;
   EXPECT_TRUE(service->MergeEnforcedProxyConfig(kTestUserWifiGuid, &config));
@@ -572,11 +556,8 @@
 TEST_F(UIProxyConfigServiceTest, ExtensionPrefForSharedNetwork) {
   std::unique_ptr<UIProxyConfigService> service = CreateServiceForUser();
 
-  base::Value extension_prefs_config =
-      ProxyConfigDictionary::CreateAutoDetect();
-  user_prefs_.SetExtensionPref(
-      proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+  user_prefs_.SetExtensionPref(proxy_config::prefs::kProxy,
+                               ProxyConfigDictionary::CreateAutoDetect());
 
   base::Value::Dict config;
   EXPECT_TRUE(service->MergeEnforcedProxyConfig(kTestSharedWifiGuid, &config));
@@ -940,11 +921,9 @@
 TEST_F(UIProxyConfigServiceTest, ExtensionPrefOverridesOncPolicy) {
   std::unique_ptr<UIProxyConfigService> service = CreateServiceForUser();
 
-  base::Value extension_prefs_config =
-      ProxyConfigDictionary::CreatePacScript("http://pac/script.pac", true);
   user_prefs_.SetExtensionPref(
       proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(extension_prefs_config)));
+      ProxyConfigDictionary::CreatePacScript("http://pac/script.pac", true));
 
   const std::string user_onc_config = base::ReplaceStringPlaceholders(
       R"([{"GUID": "$1", "Type": "WiFi", "ProxySettings": {"Type": "WPAD"}}])",
diff --git a/chromeos/services/network_config/cros_network_config_unittest.cc b/chromeos/services/network_config/cros_network_config_unittest.cc
index 045c0a3..64f2775 100644
--- a/chromeos/services/network_config/cros_network_config_unittest.cc
+++ b/chromeos/services/network_config/cros_network_config_unittest.cc
@@ -2246,10 +2246,8 @@
 TEST_F(CrosNetworkConfigTest, PolicyEnforcedProxyMode) {
   // Proxies enforced by policy and/or extension are set in the kProxy
   // preference.
-  base::Value policy_prefs_config = ProxyConfigDictionary::CreateAutoDetect();
-  user_prefs_.SetUserPref(
-      proxy_config::prefs::kProxy,
-      base::Value::ToUniquePtrValue(std::move(policy_prefs_config)));
+  user_prefs_.SetUserPref(proxy_config::prefs::kProxy,
+                          ProxyConfigDictionary::CreateAutoDetect());
 
   mojom::NetworkStatePropertiesPtr network = GetNetworkState("wifi2_guid");
   ASSERT_TRUE(network);
diff --git a/components/app_restore/BUILD.gn b/components/app_restore/BUILD.gn
index 74c35f0..3c8d69b0 100644
--- a/components/app_restore/BUILD.gn
+++ b/components/app_restore/BUILD.gn
@@ -31,8 +31,6 @@
     "full_restore_save_handler.h",
     "full_restore_utils.cc",
     "full_restore_utils.h",
-    "lacros_read_handler.cc",
-    "lacros_read_handler.h",
     "lacros_save_handler.cc",
     "lacros_save_handler.h",
     "restore_data.cc",
diff --git a/components/app_restore/full_restore_read_handler.cc b/components/app_restore/full_restore_read_handler.cc
index 740fd4f4..4d21cc4a 100644
--- a/components/app_restore/full_restore_read_handler.cc
+++ b/components/app_restore/full_restore_read_handler.cc
@@ -20,7 +20,6 @@
 #include "components/app_restore/features.h"
 #include "components/app_restore/full_restore_file_handler.h"
 #include "components/app_restore/full_restore_save_handler.h"
-#include "components/app_restore/lacros_read_handler.h"
 #include "components/app_restore/restore_data.h"
 #include "components/app_restore/window_info.h"
 #include "components/app_restore/window_properties.h"
@@ -71,16 +70,7 @@
   }
 
   if (app_restore::IsLacrosWindow(window)) {
-    // If the Lacros `window` is added to the hidden container, observe `window`
-    // to restore and remove it from the hidden container in
-    // OnWindowAddedToRootWindow callback.
-    if (lacros_read_handler_ &&
-        window_id == app_restore::kParentToHiddenContainer) {
-      observed_windows_.AddObservation(window);
-    }
-
-    if (lacros_read_handler_)
-      lacros_read_handler_->OnWindowInitialized(window);
+    DCHECK(window_id > app_restore::kParentToHiddenContainer);
 
     return;
   }
@@ -93,16 +83,6 @@
   app_restore::AppRestoreInfo::GetInstance()->OnWindowInitialized(window);
 }
 
-void FullRestoreReadHandler::OnWindowAddedToRootWindow(aura::Window* window) {
-  // If the Lacros `window` is added to the hidden container, call
-  // OnWindowAddedToRootWindow to restore and remove it from the hidden
-  // container.
-  if (app_restore::IsLacrosWindow(window) && lacros_read_handler_ &&
-      window->GetProperty(app_restore::kParentToHiddenContainerKey)) {
-    lacros_read_handler_->OnWindowAddedToRootWindow(window);
-  }
-}
-
 void FullRestoreReadHandler::OnWindowDestroyed(aura::Window* window) {
   DCHECK(observed_windows_.IsObservingSource(window));
   observed_windows_.RemoveObservation(window);
@@ -113,9 +93,6 @@
     return;
   }
 
-  if (app_restore::IsLacrosWindow(window) && lacros_read_handler_)
-    lacros_read_handler_->OnWindowDestroyed(window);
-
   int32_t restore_window_id =
       window->GetProperty(app_restore::kRestoreWindowIdKey);
   DCHECK(SessionID::IsValidValue(restore_window_id));
@@ -168,27 +145,9 @@
     arc_read_handler_->OnTaskDestroyed(task_id);
 }
 
-void FullRestoreReadHandler::OnLacrosChromeAppWindowAdded(
-    const std::string& app_id,
-    const std::string& window_id) {
-  if (lacros_read_handler_)
-    lacros_read_handler_->OnAppWindowAdded(app_id, window_id);
-}
-
-void FullRestoreReadHandler::OnLacrosChromeAppWindowRemoved(
-    const std::string& app_id,
-    const std::string& window_id) {
-  if (lacros_read_handler_)
-    lacros_read_handler_->OnAppWindowRemoved(app_id, window_id);
-}
-
 void FullRestoreReadHandler::SetPrimaryProfilePath(
     const base::FilePath& profile_path) {
   primary_profile_path_ = profile_path;
-  if (::full_restore::features::IsFullRestoreForLacrosEnabled()) {
-    lacros_read_handler_ =
-        std::make_unique<app_restore::LacrosReadHandler>(profile_path);
-  }
 }
 
 void FullRestoreReadHandler::SetActiveProfilePath(
@@ -339,9 +298,8 @@
 
 int32_t FullRestoreReadHandler::GetLacrosRestoreWindowId(
     const std::string& lacros_window_id) const {
-  return IsLacrosRestoreRunning()
-             ? lacros_read_handler_->GetLacrosRestoreWindowId(lacros_window_id)
-             : 0;
+  return full_restore::FullRestoreReadHandler::GetInstance()
+      ->FetchRestoreWindowId(lacros_window_id);
 }
 
 void FullRestoreReadHandler::SetArcSessionIdForWindowId(int32_t arc_session_id,
@@ -416,7 +374,7 @@
 }
 
 bool FullRestoreReadHandler::IsLacrosRestoreRunning() const {
-  if (!lacros_read_handler_ || active_profile_path_ != primary_profile_path_)
+  if (active_profile_path_ != primary_profile_path_)
     return false;
 
   auto it = profile_path_to_start_time_data_.find(primary_profile_path_);
@@ -451,12 +409,6 @@
         } else {
           window_id_to_app_restore_info_[window_id] =
               std::make_pair(profile_path, app_id);
-          // TODO(crbug.com/1239984): Remove restore data from
-          // `lacros_read_handler_` for ash browser apps.
-          if (lacros_read_handler_ && app_id != app_constants::kChromeAppId &&
-              primary_profile_path_ == profile_path) {
-            lacros_read_handler_->AddRestoreData(app_id, window_id);
-          }
         }
       }
     }
diff --git a/components/app_restore/full_restore_read_handler.h b/components/app_restore/full_restore_read_handler.h
index 3a8231d1..4b444970 100644
--- a/components/app_restore/full_restore_read_handler.h
+++ b/components/app_restore/full_restore_read_handler.h
@@ -26,7 +26,6 @@
 
 namespace app_restore {
 struct AppLaunchInfo;
-class LacrosReadHandler;
 class RestoreData;
 struct WindowInfo;
 }  // namespace app_restore
@@ -73,7 +72,6 @@
   void OnWindowInitialized(aura::Window* window) override;
 
   // aura::WindowObserver:
-  void OnWindowAddedToRootWindow(aura::Window* window) override;
   void OnWindowDestroyed(aura::Window* window) override;
 
   // app_restore::ArcReadHandler::Delegate:
@@ -95,18 +93,6 @@
                      int32_t session_id) override;
   void OnTaskDestroyed(int32_t task_id) override;
 
-  // Invoked when an Chrome app Lacros window is created. `app_id` is the
-  // AppService id, and `window_id` is the wayland app_id property for the
-  // window.
-  void OnLacrosChromeAppWindowAdded(const std::string& app_id,
-                                    const std::string& window_id);
-
-  // Invoked when an Chrome app Lacros window is removed. `app_id` is the
-  // AppService id, and `window_id` is the wayland app_id property for the
-  // window.
-  void OnLacrosChromeAppWindowRemoved(const std::string& app_id,
-                                      const std::string& window_id);
-
   void SetPrimaryProfilePath(const base::FilePath& profile_path);
 
   void SetActiveProfilePath(const base::FilePath& profile_path);
@@ -239,8 +225,6 @@
 
   std::unique_ptr<app_restore::ArcReadHandler> arc_read_handler_;
 
-  std::unique_ptr<app_restore::LacrosReadHandler> lacros_read_handler_;
-
   // Records whether we need to check the restore data for the profile path. If
   // the profile path is recorded, we should check the restore data. Otherwise,
   // we don't need to check the restore data, because the restore process hasn't
diff --git a/components/app_restore/full_restore_utils.cc b/components/app_restore/full_restore_utils.cc
index bb4a81a..9b0cc55 100644
--- a/components/app_restore/full_restore_utils.cc
+++ b/components/app_restore/full_restore_utils.cc
@@ -62,8 +62,6 @@
   if (!full_restore::features::IsFullRestoreForLacrosEnabled())
     return;
 
-  FullRestoreReadHandler::GetInstance()->OnLacrosChromeAppWindowAdded(
-      app_id, window_id);
   FullRestoreSaveHandler::GetInstance()->OnLacrosChromeAppWindowAdded(
       app_id, window_id);
 }
@@ -73,8 +71,6 @@
   if (!full_restore::features::IsFullRestoreForLacrosEnabled())
     return;
 
-  FullRestoreReadHandler::GetInstance()->OnLacrosChromeAppWindowRemoved(
-      app_id, window_id);
   FullRestoreSaveHandler::GetInstance()->OnLacrosChromeAppWindowRemoved(
       app_id, window_id);
 }
diff --git a/components/app_restore/lacros_read_handler.cc b/components/app_restore/lacros_read_handler.cc
deleted file mode 100644
index ba4391a..0000000
--- a/components/app_restore/lacros_read_handler.cc
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2022 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/app_restore/lacros_read_handler.h"
-
-#include "ash/constants/app_types.h"
-#include "base/ranges/algorithm.h"
-#include "components/app_restore/app_restore_info.h"
-#include "components/app_restore/app_restore_utils.h"
-#include "components/app_restore/full_restore_read_handler.h"
-#include "components/app_restore/window_info.h"
-#include "components/app_restore/window_properties.h"
-#include "components/sessions/core/session_id.h"
-#include "ui/aura/client/aura_constants.h"
-#include "ui/aura/window.h"
-
-namespace app_restore {
-
-LacrosReadHandler::LacrosReadHandler(const base::FilePath& profile_path)
-    : profile_path_(profile_path) {}
-
-LacrosReadHandler::~LacrosReadHandler() = default;
-
-void LacrosReadHandler::OnWindowInitialized(aura::Window* window) {
-  // TODO(sophiewen): Test this in full_restore_read_and_save_unittest.
-  if (!IsLacrosWindow(window))
-    return;
-
-  int32_t restored_browser_session_id =
-      window->GetProperty(app_restore::kRestoreWindowIdKey);
-
-  auto it = window_to_window_data_.find(window);
-  if (it != window_to_window_data_.end() &&
-      it->second.restore_window_id == restored_browser_session_id) {
-    // `window` has been restored.
-    return;
-  }
-
-  window_to_window_data_[window].restore_window_id =
-      restored_browser_session_id;
-
-  // If there is a restore data, set the app id to restore `window`.
-  auto restore_it =
-      restore_window_id_to_app_id_.find(restored_browser_session_id);
-  if (restore_it != restore_window_id_to_app_id_.end())
-    window_to_window_data_[window].app_id = restore_it->second;
-
-  // If `window` is added to a hidden container, call UpdateWindow to restore
-  // and remove `window` from the hidden container.
-  if (base::Contains(window_candidates_, window))
-    UpdateWindow(window);
-}
-
-void LacrosReadHandler::AddRestoreData(const std::string& app_id,
-                                       int32_t window_id) {
-  restore_window_id_to_app_id_[window_id] = app_id;
-}
-
-void LacrosReadHandler::OnAppWindowAdded(const std::string& app_id,
-                                         const std::string& lacros_window_id) {
-  lacros_window_id_to_app_id_[lacros_window_id] = app_id;
-
-  auto window_it = base::ranges::find(
-      window_candidates_, lacros_window_id,
-      [](aura::Window* window) { return GetLacrosWindowId(window); });
-  if (window_it == window_candidates_.end())
-    return;
-
-  SetWindowData(
-      *window_it, app_id,
-      full_restore::FullRestoreReadHandler::GetInstance()->FetchRestoreWindowId(
-          app_id));
-  UpdateWindow(*window_it);
-}
-
-void LacrosReadHandler::OnAppWindowRemoved(
-    const std::string& app_id,
-    const std::string& lacros_window_id) {
-  lacros_window_id_to_app_id_.erase(lacros_window_id);
-}
-
-void LacrosReadHandler::OnWindowAddedToRootWindow(aura::Window* window) {
-  if (!window->GetProperty(app_restore::kParentToHiddenContainerKey)) {
-    // If `window` has been removed from the hidden container, we don't need to
-    // restore it, because it has been restored.
-    return;
-  }
-
-  auto window_it = window_to_window_data_.find(window);
-  if (window_it != window_to_window_data_.end()) {
-    // We have received the restore window, so restore and remove `window` from
-    // the hidden container.
-    UpdateWindow(window);
-    return;
-  }
-
-  const auto lacros_window_id = GetLacrosWindowId(window);
-  auto it = lacros_window_id_to_app_id_.find(lacros_window_id);
-  if (it != lacros_window_id_to_app_id_.end()) {
-    // We have received the app id for the Chrome app window, so restore and
-    // remove `window` from the hidden container.
-    SetWindowData(window, it->second,
-                  full_restore::FullRestoreReadHandler::GetInstance()
-                      ->FetchRestoreWindowId(it->second));
-    UpdateWindow(window);
-    return;
-  }
-
-  // We haven't received the restore window id, add `window` to
-  // `window_candidates_` to wait for the restore window id.
-  window_candidates_.insert(window);
-}
-
-void LacrosReadHandler::OnWindowDestroyed(aura::Window* window) {
-  window_candidates_.erase(window);
-  window_to_window_data_.erase(window);
-}
-
-int32_t LacrosReadHandler::GetLacrosRestoreWindowId(
-    const std::string& lacros_window_id) const {
-  auto it = lacros_window_id_to_app_id_.find(lacros_window_id);
-  // Set restore window id as 0 to prevent the window is added to the hidden
-  // container. Windows restoration will be done by exo with another method.
-  return it == lacros_window_id_to_app_id_.end()
-             ? 0
-             : full_restore::FullRestoreReadHandler::GetInstance()
-                   ->FetchRestoreWindowId(it->second);
-}
-
-void LacrosReadHandler::SetWindowData(aura::Window* const window,
-                                      const std::string& app_id,
-                                      int32_t restore_window_id) {
-  if (base::Contains(restore_window_id_to_app_id_, restore_window_id))
-    window_to_window_data_[window].app_id = app_id;
-  window_to_window_data_[window].restore_window_id = restore_window_id;
-}
-
-void LacrosReadHandler::UpdateWindow(aura::Window* const window) {
-  auto it = window_to_window_data_.find(window);
-  if (it != window_to_window_data_.end() && !it->second.app_id.empty()) {
-    // `window` is restored, so set the window property `kRestoreWindowIdKey`
-    // and `kWindowInfoKey` to restore `window`.
-    window->SetProperty(kRestoreWindowIdKey, it->second.restore_window_id);
-    auto window_info =
-        full_restore::FullRestoreReadHandler::GetInstance()->GetWindowInfo(
-            profile_path_, it->second.app_id, it->second.restore_window_id);
-    if (window_info)
-      ApplyProperties(window_info.get(), window);
-
-    restore_window_id_to_app_id_.erase(it->second.restore_window_id);
-  }
-
-  // Remove the window from the hidden container.
-  app_restore::AppRestoreInfo::GetInstance()->OnParentWindowToValidContainer(
-      window);
-
-  window_candidates_.erase(window);
-}
-
-}  // namespace app_restore
diff --git a/components/app_restore/lacros_read_handler.h b/components/app_restore/lacros_read_handler.h
deleted file mode 100644
index dc728e0..0000000
--- a/components/app_restore/lacros_read_handler.h
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2022 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_APP_RESTORE_LACROS_READ_HANDLER_H_
-#define COMPONENTS_APP_RESTORE_LACROS_READ_HANDLER_H_
-
-#include <map>
-#include <set>
-
-#include "base/component_export.h"
-#include "base/files/file_path.h"
-
-namespace aura {
-class Window;
-}
-
-namespace app_restore {
-
-// LacrosSaveHandler is a helper class for FullRestoreReadHandler to restore
-// Lacros windows.
-//
-// For Lacros browser window, the restored browser session id is used as the
-// restore window id. So only when the restored browser session id is received
-// via mojom calls, the window can be restored. OnLacrosBrowserWindowAdded is
-// called when both `window` is initialized, and the restored browser session id
-// is received. So there could be 2 scenarios:
-//
-// 1. `window` is initialized first, then `window` is added to the hidden
-// container, and OnWindowAddedToRootWindow is called to save `window` in
-// `window_candidates_` to wait for the restored browser session id. When
-// OnLacrosBrowserWindowAdded is called, call UpdateWindow to apply the restore
-// window properties, and remove `window` from the hidden container.
-//
-// 2. The restored browser session id is received first, then
-// OnLacrosBrowserWindowAdded is called when `window` is initialized. We have to
-// wait for the OnWindowAddedToRootWindow callback, because `window`'s root is
-// not set yet in the OnWindowInitialized/OnLacrosBrowserWindowAdded callback,
-// and we can't remove `window` from the hidden container. When
-// OnWindowAddedToRootWindow is called, `window` can be restored and removed
-// from the hidden container.
-//
-// TODO(crbug.com/1239984): Restore Lacros windows.
-class COMPONENT_EXPORT(APP_RESTORE) LacrosReadHandler {
- public:
-  LacrosReadHandler(const base::FilePath& profile_path);
-  LacrosReadHandler(const LacrosReadHandler&) = delete;
-  LacrosReadHandler& operator=(const LacrosReadHandler&) = delete;
-  ~LacrosReadHandler();
-
-  // Invoked when `window` is initialized.
-  void OnWindowInitialized(aura::Window* window);
-
-  // Sets `app_id` and `window_id` to `restore_window_id_to_app_id_` to record
-  // that there is a restore data for `app_id` and `window_id`.
-  void AddRestoreData(const std::string& app_id, int32_t window_id);
-
-  // Invoked when an Chrome app Lacros window is created. `app_id` is the
-  // AppService id, and `window_id` is the wayland app_id property for the
-  // window.
-  void OnAppWindowAdded(const std::string& app_id,
-                        const std::string& lacros_window_id);
-
-  // Invoked when an Chrome app Lacros window is removed. `app_id` is the
-  // AppService id, and `window_id` is the wayland app_id property for the
-  // window.
-  void OnAppWindowRemoved(const std::string& app_id,
-                          const std::string& lacros_window_id);
-
-  // Invoked when `window` is added to the root window.
-  void OnWindowAddedToRootWindow(aura::Window* window);
-
-  // Invoked when `window` is destroyed.
-  void OnWindowDestroyed(aura::Window* window);
-
-  // Returns the restore window id for the Lacros window with
-  // `lacros_window_id`.
-  int32_t GetLacrosRestoreWindowId(const std::string& lacros_window_id) const;
-
- private:
-  struct WindowData {
-    std::string app_id;
-    int32_t restore_window_id = -1;
-  };
-
-  // Sets `app_id` and `restore_window_id` for `window` in
-  // `window_to_window_data_`. If there is no restore data for
-  // `restore_window_id`, `app_id` won't be set to skip setting the restore data
-  // for `window`.
-  void SetWindowData(aura::Window* const window,
-                     const std::string& app_id,
-                     int32_t restore_window_id);
-
-  // Sets `kRestoreWindowIdKey` and `kWindowInfoKey` to restore and remove
-  // `window from the hidden container`.
-  void UpdateWindow(aura::Window* const window);
-
-  // The user profile path for Lacros windows.
-  base::FilePath profile_path_;
-
-  // The map from the restore window id to the app id for Lacros windows.
-  std::map<int32_t, std::string> restore_window_id_to_app_id_;
-
-  // The map from the window to the app id and the restore window id.
-  std::map<aura::Window*, WindowData> window_to_window_data_;
-
-  // The mojom call to forward the restore window id could be received later
-  // than the OnWindowAddedToRootWindow callback. So add windows to
-  // `window_candidates_` to record window candidates. Once the restore window
-  // id is received, the window can be restored and removed from the hidden
-  // container.
-  std::set<aura::Window*> window_candidates_;
-
-  // The map from the lacros window id to the app id for Chrome app windows.
-  std::map<std::string, std::string> lacros_window_id_to_app_id_;
-};
-
-}  // namespace app_restore
-
-#endif  // COMPONENTS_APP_RESTORE_LACROS_READ_HANDLER_H_
diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
index dd1568a48..b08cbb0b 100644
--- a/components/bookmarks/browser/bookmark_utils.cc
+++ b/components/bookmarks/browser/bookmark_utils.cc
@@ -116,12 +116,15 @@
   return HasSelectedAncestor(model, selected_nodes, node->parent());
 }
 
-const BookmarkNode* GetNodeByID(const BookmarkNode* node, int64_t id) {
-  if (node->id() == id)
+// Recursively searches for a node satisfying the functor |pred| . Returns
+// nullptr if not found.
+template <typename Predicate>
+const BookmarkNode* FindNode(const BookmarkNode* node, Predicate pred) {
+  if (pred(node))
     return node;
 
   for (const auto& child : node->children()) {
-    const BookmarkNode* result = GetNodeByID(child.get(), id);
+    const BookmarkNode* result = FindNode(child.get(), pred);
     if (result)
       return result;
   }
@@ -558,8 +561,15 @@
 
 const BookmarkNode* GetBookmarkNodeByID(const BookmarkModel* model,
                                         int64_t id) {
-  // TODO(sky): TreeNode needs a method that visits all nodes using a predicate.
-  return GetNodeByID(model->root_node(), id);
+  return FindNode(model->root_node(),
+                  [id](const BookmarkNode* node) { return node->id() == id; });
+}
+
+const BookmarkNode* GetBookmarkNodeByGUID(const BookmarkModel* model,
+                                          const base::GUID& guid) {
+  return FindNode(model->root_node(), [&guid](const BookmarkNode* node) {
+    return node->guid() == guid;
+  });
 }
 
 bool IsDescendantOf(const BookmarkNode* node, const BookmarkNode* root) {
diff --git a/components/bookmarks/browser/bookmark_utils.h b/components/bookmarks/browser/bookmark_utils.h
index 0ef752f..39c3c24d 100644
--- a/components/bookmarks/browser/bookmark_utils.h
+++ b/components/bookmarks/browser/bookmark_utils.h
@@ -179,6 +179,10 @@
 // Returns the node with |id|, or NULL if there is no node with |id|.
 const BookmarkNode* GetBookmarkNodeByID(const BookmarkModel* model, int64_t id);
 
+// Returns the node with |guid|, or NULL if there is no node with |guid|.
+const BookmarkNode* GetBookmarkNodeByGUID(const BookmarkModel* model,
+                                          const base::GUID& guid);
+
 // Returns true if |node| is a descendant of |root|.
 bool IsDescendantOf(const BookmarkNode* node, const BookmarkNode* root);
 
diff --git a/components/bookmarks/common/android/BUILD.gn b/components/bookmarks/common/android/BUILD.gn
index 5220e08..3111146c 100644
--- a/components/bookmarks/common/android/BUILD.gn
+++ b/components/bookmarks/common/android/BUILD.gn
@@ -19,10 +19,15 @@
 android_library("bookmarks_java") {
   deps = [
     "//base:jni_java",
+    "//components/url_formatter/android:url_formatter_java",
     "//third_party/androidx:androidx_annotation_annotation_java",
+    "//url:gurl_java",
   ]
   srcjar_deps = [ ":bookmark_type_javagen" ]
-  sources = [ "java/src/org/chromium/components/bookmarks/BookmarkId.java" ]
+  sources = [
+    "java/src/org/chromium/components/bookmarks/BookmarkId.java",
+    "java/src/org/chromium/components/bookmarks/BookmarkItem.java",
+  ]
 }
 
 generate_jni("bookmarks_jni_headers") {
diff --git a/components/bookmarks/common/android/java/src/org/chromium/components/bookmarks/BookmarkItem.java b/components/bookmarks/common/android/java/src/org/chromium/components/bookmarks/BookmarkItem.java
new file mode 100644
index 0000000..5ffe67b39
--- /dev/null
+++ b/components/bookmarks/common/android/java/src/org/chromium/components/bookmarks/BookmarkItem.java
@@ -0,0 +1,111 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.components.bookmarks;
+
+import androidx.annotation.VisibleForTesting;
+
+import org.chromium.components.url_formatter.SchemeDisplay;
+import org.chromium.components.url_formatter.UrlFormatter;
+import org.chromium.url.GURL;
+
+/**
+ * Contains data about a bookmark or bookmark folder.
+ */
+public class BookmarkItem {
+    private final String mTitle;
+    private final GURL mUrl;
+    private final BookmarkId mId;
+    private final boolean mIsFolder;
+    private final BookmarkId mParentId;
+    private final boolean mIsEditable;
+    private final boolean mIsManaged;
+    private final long mDateAdded;
+    private final boolean mRead;
+    private boolean mForceEditableForTesting;
+
+    public BookmarkItem(BookmarkId id, String title, GURL url, boolean isFolder,
+            BookmarkId parentId, boolean isEditable, boolean isManaged, long dateAdded,
+            boolean read) {
+        mId = id;
+        mTitle = title;
+        mUrl = url;
+        mIsFolder = isFolder;
+        mParentId = parentId;
+        mIsEditable = isEditable;
+        mIsManaged = isManaged;
+        mDateAdded = dateAdded;
+        mRead = read;
+    }
+
+    /** Returns the title of the bookmark item. */
+    public String getTitle() {
+        return mTitle;
+    }
+
+    /** Returns the url of the bookmark item. */
+    public GURL getUrl() {
+        return mUrl;
+    }
+
+    /** Returns the string to display for the item's url. */
+    public String getUrlForDisplay() {
+        return UrlFormatter.formatUrlForSecurityDisplay(
+                getUrl(), SchemeDisplay.OMIT_HTTP_AND_HTTPS);
+    }
+
+    /** Returns whether item is a folder or a bookmark. */
+    public boolean isFolder() {
+        return mIsFolder;
+    }
+
+    /** Returns the parent id of the bookmark item. */
+    public BookmarkId getParentId() {
+        return mParentId;
+    }
+
+    /** Returns whether this bookmark can be edited. */
+    public boolean isEditable() {
+        return mForceEditableForTesting || mIsEditable;
+    }
+
+    /** Returns whether this bookmark's URL can be edited */
+    public boolean isUrlEditable() {
+        return isEditable() && mId.getType() == BookmarkType.NORMAL;
+    }
+
+    /** Returns whether this bookmark can be moved */
+    public boolean isReorderable() {
+        return isEditable() && mId.getType() == BookmarkType.NORMAL;
+    }
+
+    /** Returns whether this is a managed bookmark. */
+    public boolean isManaged() {
+        return mIsManaged;
+    }
+
+    /** Returns the {@link BookmarkId}. */
+    public BookmarkId getId() {
+        return mId;
+    }
+
+    /** Returns the timestamp in milliseconds since epoch that the bookmark is added. */
+    public long getDateAdded() {
+        return mDateAdded;
+    }
+
+    /**
+     * Returns whether the bookmark is read. Only valid for {@link BookmarkType#READING_LIST}.
+     * Defaults to "false" for other types.
+     */
+    public boolean isRead() {
+        return mRead;
+    }
+
+    // TODO(https://crbug.com/1019217): Remove when BookmarkModel is stubbed in tests instead.
+    @VisibleForTesting
+    public void forceEditableForTesting() {
+        mForceEditableForTesting = true;
+    }
+}
diff --git a/components/commerce/core/subscriptions/subscriptions_manager.cc b/components/commerce/core/subscriptions/subscriptions_manager.cc
index 30b3ed1..3afd701a 100644
--- a/components/commerce/core/subscriptions/subscriptions_manager.cc
+++ b/components/commerce/core/subscriptions/subscriptions_manager.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "components/commerce/core/subscriptions/subscriptions_manager.h"
+#include "base/metrics/histogram_functions.h"
 #include "components/commerce/core/commerce_feature_list.h"
 #include "components/commerce/core/subscriptions/commerce_subscription.h"
 #include "components/commerce/core/subscriptions/subscriptions_server_proxy.h"
@@ -51,7 +52,7 @@
 
 SubscriptionsManager::Request::Request(SubscriptionType type,
                                        AsyncOperation operation,
-                                       base::OnceCallback<void(bool)> callback)
+                                       SubscriptionsRequestCallback callback)
     : type(type), operation(operation), callback(std::move(callback)) {
   CHECK(operation == AsyncOperation::kInit);
 }
@@ -59,7 +60,7 @@
     SubscriptionType type,
     AsyncOperation operation,
     std::unique_ptr<std::vector<CommerceSubscription>> subscriptions,
-    base::OnceCallback<void(bool)> callback)
+    SubscriptionsRequestCallback callback)
     : type(type),
       operation(operation),
       subscriptions(std::move(subscriptions)),
@@ -74,15 +75,19 @@
     std::unique_ptr<std::vector<CommerceSubscription>> subscriptions,
     base::OnceCallback<void(bool)> callback) {
   SubscriptionType type = (*subscriptions)[0].type;
-  pending_requests_.push(
-      Request(type, AsyncOperation::kSubscribe, std::move(subscriptions),
-              base::BindOnce(
-                  [](base::WeakPtr<SubscriptionsManager> manager,
-                     base::OnceCallback<void(bool)> callback, bool result) {
-                    std::move(callback).Run(result);
-                    manager->OnRequestCompletion();
-                  },
-                  weak_ptr_factory_.GetWeakPtr(), std::move(callback))));
+  pending_requests_.emplace(
+      type, AsyncOperation::kSubscribe, std::move(subscriptions),
+      base::BindOnce(
+          [](base::WeakPtr<SubscriptionsManager> manager,
+             base::OnceCallback<void(bool)> callback,
+             SubscriptionsRequestStatus result) {
+            base::UmaHistogramEnumeration("Commerce.Subscriptions.TrackResult",
+                                          result);
+            std::move(callback).Run(result ==
+                                    SubscriptionsRequestStatus::kSuccess);
+            manager->OnRequestCompletion();
+          },
+          weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
   CheckAndProcessRequest();
 }
 
@@ -90,15 +95,19 @@
     std::unique_ptr<std::vector<CommerceSubscription>> subscriptions,
     base::OnceCallback<void(bool)> callback) {
   SubscriptionType type = (*subscriptions)[0].type;
-  pending_requests_.push(
-      Request(type, AsyncOperation::kUnsubscribe, std::move(subscriptions),
-              base::BindOnce(
-                  [](base::WeakPtr<SubscriptionsManager> manager,
-                     base::OnceCallback<void(bool)> callback, bool result) {
-                    std::move(callback).Run(result);
-                    manager->OnRequestCompletion();
-                  },
-                  weak_ptr_factory_.GetWeakPtr(), std::move(callback))));
+  pending_requests_.emplace(
+      type, AsyncOperation::kUnsubscribe, std::move(subscriptions),
+      base::BindOnce(
+          [](base::WeakPtr<SubscriptionsManager> manager,
+             base::OnceCallback<void(bool)> callback,
+             SubscriptionsRequestStatus result) {
+            base::UmaHistogramEnumeration(
+                "Commerce.Subscriptions.UntrackResult", result);
+            std::move(callback).Run(result ==
+                                    SubscriptionsRequestStatus::kSuccess);
+            manager->OnRequestCompletion();
+          },
+          weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
   CheckAndProcessRequest();
 }
 
@@ -108,14 +117,16 @@
   if (base::FeatureList::IsEnabled(commerce::kShoppingList) &&
       account_checker_ && account_checker_->IsSignedIn() &&
       account_checker_->IsAnonymizedUrlDataCollectionEnabled()) {
-    pending_requests_.push(Request(
+    pending_requests_.emplace(
         SubscriptionType::kPriceTrack, AsyncOperation::kInit,
         base::BindOnce(
-            [](base::WeakPtr<SubscriptionsManager> manager, bool result) {
-              manager->init_succeeded_ = result;
+            [](base::WeakPtr<SubscriptionsManager> manager,
+               SubscriptionsRequestStatus result) {
+              manager->init_succeeded_ =
+                  result == SubscriptionsRequestStatus::kSuccess;
               manager->OnRequestCompletion();
             },
-            weak_ptr_factory_.GetWeakPtr())));
+            weak_ptr_factory_.GetWeakPtr()));
   }
   CheckAndProcessRequest();
 }
@@ -156,14 +167,15 @@
 
 void SubscriptionsManager::ProcessSubscribeRequest(Request request) {
   if (!init_succeeded_) {
-    std::move(request.callback).Run(false);
+    std::move(request.callback)
+        .Run(SubscriptionsRequestStatus::kLastSyncFailed);
     return;
   }
   storage_->GetUniqueNonExistingSubscriptions(
       std::move(request.subscriptions),
       base::BindOnce(
           [](base::WeakPtr<SubscriptionsManager> manager, SubscriptionType type,
-             base::OnceCallback<void(bool)> callback,
+             SubscriptionsRequestCallback callback,
              std::unique_ptr<std::vector<CommerceSubscription>>
                  unique_subscriptions) {
             manager->server_proxy_->Create(
@@ -178,14 +190,15 @@
 
 void SubscriptionsManager::ProcessUnsubscribeRequest(Request request) {
   if (!init_succeeded_) {
-    std::move(request.callback).Run(false);
+    std::move(request.callback)
+        .Run(SubscriptionsRequestStatus::kLastSyncFailed);
     return;
   }
   storage_->GetUniqueExistingSubscriptions(
       std::move(request.subscriptions),
       base::BindOnce(
           [](base::WeakPtr<SubscriptionsManager> manager, SubscriptionType type,
-             base::OnceCallback<void(bool)> callback,
+             SubscriptionsRequestCallback callback,
              std::unique_ptr<std::vector<CommerceSubscription>>
                  unique_subscriptions) {
             manager->server_proxy_->Delete(
@@ -200,7 +213,7 @@
 
 void SubscriptionsManager::GetRemoteSubscriptionsAndUpdateStorage(
     SubscriptionType type,
-    base::OnceCallback<void(bool)> callback) {
+    SubscriptionsRequestCallback callback) {
   server_proxy_->Get(
       type, base::BindOnce(
                 &SubscriptionsManager::HandleGetSubscriptionsResponse,
@@ -209,11 +222,11 @@
 
 void SubscriptionsManager::HandleGetSubscriptionsResponse(
     SubscriptionType type,
-    base::OnceCallback<void(bool)> callback,
-    bool succeeded,
+    SubscriptionsRequestCallback callback,
+    SubscriptionsRequestStatus status,
     std::unique_ptr<std::vector<CommerceSubscription>> remote_subscriptions) {
-  if (!succeeded) {
-    std::move(callback).Run(false);
+  if (status != SubscriptionsRequestStatus::kSuccess) {
+    std::move(callback).Run(status);
   } else {
     storage_->UpdateStorage(type, std::move(callback),
                             std::move(remote_subscriptions));
@@ -222,11 +235,11 @@
 
 void SubscriptionsManager::HandleManageSubscriptionsResponse(
     SubscriptionType type,
-    base::OnceCallback<void(bool)> callback,
-    bool succeeded) {
-  if (!succeeded) {
+    SubscriptionsRequestCallback callback,
+    SubscriptionsRequestStatus status) {
+  if (status != SubscriptionsRequestStatus::kSuccess) {
     VLOG(1) << "Fail to create or delete subscriptions on server";
-    std::move(callback).Run(false);
+    std::move(callback).Run(status);
   } else {
     GetRemoteSubscriptionsAndUpdateStorage(type, std::move(callback));
   }
diff --git a/components/commerce/core/subscriptions/subscriptions_manager.h b/components/commerce/core/subscriptions/subscriptions_manager.h
index a94a519e5..f92ad65 100644
--- a/components/commerce/core/subscriptions/subscriptions_manager.h
+++ b/components/commerce/core/subscriptions/subscriptions_manager.h
@@ -30,6 +30,28 @@
 enum class SubscriptionType;
 struct CommerceSubscription;
 
+// Possible result status of a product (un)tracking request. This enum needs to
+// match the values in enums.xml.
+enum class SubscriptionsRequestStatus {
+  kSuccess = 0,
+  // Server failed to parse the request.
+  kServerParseError = 1,
+  // Server successfully parsed the request, but failed afterwards.
+  kServerInternalError = 2,
+  // Local storage failed to load, create, or delete subscriptions.
+  kStorageError = 3,
+  // If the last sync with server failed, we just drop this request.
+  kLastSyncFailed = 4,
+  // The passed in argument is invalid.
+  kInvalidArgument = 5,
+
+  // This enum must be last and is only used for histograms.
+  kMaxValue = kInvalidArgument
+};
+
+using SubscriptionsRequestCallback =
+    base::OnceCallback<void(SubscriptionsRequestStatus)>;
+
 class SubscriptionsManager : public signin::IdentityManager::Observer {
  public:
   SubscriptionsManager(
@@ -83,11 +105,11 @@
   struct Request {
     Request(SubscriptionType type,
             AsyncOperation operation,
-            base::OnceCallback<void(bool)> callback);
+            SubscriptionsRequestCallback callback);
     Request(SubscriptionType type,
             AsyncOperation operation,
             std::unique_ptr<std::vector<CommerceSubscription>> subscriptions,
-            base::OnceCallback<void(bool)> callback);
+            SubscriptionsRequestCallback callback);
     Request(const Request&) = delete;
     Request& operator=(const Request&) = delete;
     Request(Request&&);
@@ -97,7 +119,7 @@
     SubscriptionType type;
     AsyncOperation operation;
     std::unique_ptr<std::vector<CommerceSubscription>> subscriptions;
-    base::OnceCallback<void(bool)> callback;
+    SubscriptionsRequestCallback callback;
   };
 
   // Fetch all backend subscriptions and sync with local storage. This should
@@ -121,18 +143,17 @@
 
   void GetRemoteSubscriptionsAndUpdateStorage(
       SubscriptionType type,
-      base::OnceCallback<void(bool)> callback);
+      SubscriptionsRequestCallback callback);
 
   void HandleGetSubscriptionsResponse(
       SubscriptionType type,
-      base::OnceCallback<void(bool)> callback,
-      bool succeeded,
+      SubscriptionsRequestCallback callback,
+      SubscriptionsRequestStatus status,
       std::unique_ptr<std::vector<CommerceSubscription>> remote_subscriptions);
 
-  void HandleManageSubscriptionsResponse(
-      SubscriptionType type,
-      base::OnceCallback<void(bool)> callback,
-      bool succeeded);
+  void HandleManageSubscriptionsResponse(SubscriptionType type,
+                                         SubscriptionsRequestCallback callback,
+                                         SubscriptionsRequestStatus status);
 
   void HandleCheckLocalSubscriptionResponse(bool should_exisit,
                                             bool is_subscribed);
diff --git a/components/commerce/core/subscriptions/subscriptions_manager_unittest.cc b/components/commerce/core/subscriptions/subscriptions_manager_unittest.cc
index 3fcb367..4a2dd2a5 100644
--- a/components/commerce/core/subscriptions/subscriptions_manager_unittest.cc
+++ b/components/commerce/core/subscriptions/subscriptions_manager_unittest.cc
@@ -87,14 +87,18 @@
             [succeeded](std::unique_ptr<std::vector<CommerceSubscription>>
                             subscriptions,
                         ManageSubscriptionsFetcherCallback callback) {
-              std::move(callback).Run(succeeded);
+              std::move(callback).Run(
+                  succeeded ? SubscriptionsRequestStatus::kSuccess
+                            : SubscriptionsRequestStatus::kServerParseError);
             });
     ON_CALL(*this, Delete)
         .WillByDefault(
             [succeeded](std::unique_ptr<std::vector<CommerceSubscription>>
                             subscriptions,
                         ManageSubscriptionsFetcherCallback callback) {
-              std::move(callback).Run(succeeded);
+              std::move(callback).Run(
+                  succeeded ? SubscriptionsRequestStatus::kSuccess
+                            : SubscriptionsRequestStatus::kServerParseError);
             });
   }
 
@@ -105,8 +109,10 @@
         .WillByDefault([subscription_id, succeeded](
                            SubscriptionType type,
                            GetSubscriptionsFetcherCallback callback) {
-          std::move(callback).Run(succeeded,
-                                  BuildSubscriptions(subscription_id));
+          std::move(callback).Run(
+              succeeded ? SubscriptionsRequestStatus::kSuccess
+                        : SubscriptionsRequestStatus::kServerParseError,
+              BuildSubscriptions(subscription_id));
         });
   }
 };
@@ -132,7 +138,7 @@
       void,
       UpdateStorage,
       (SubscriptionType type,
-       base::OnceCallback<void(bool)> callback,
+       StorageOperationCallback callback,
        std::unique_ptr<std::vector<CommerceSubscription>> remote_subscriptions),
       (override));
   MOCK_METHOD(void, DeleteAll, (), (override));
@@ -166,10 +172,12 @@
     ON_CALL(*this, UpdateStorage)
         .WillByDefault(
             [succeeded](SubscriptionType type,
-                        base::OnceCallback<void(bool)> callback,
+                        StorageOperationCallback callback,
                         std::unique_ptr<std::vector<CommerceSubscription>>
                             remote_subscriptions) {
-              std::move(callback).Run(succeeded);
+              std::move(callback).Run(
+                  succeeded ? SubscriptionsRequestStatus::kSuccess
+                            : SubscriptionsRequestStatus::kStorageError);
             });
   }
 
diff --git a/components/commerce/core/subscriptions/subscriptions_server_proxy.cc b/components/commerce/core/subscriptions/subscriptions_server_proxy.cc
index fe70cdb..6d770af1 100644
--- a/components/commerce/core/subscriptions/subscriptions_server_proxy.cc
+++ b/components/commerce/core/subscriptions/subscriptions_server_proxy.cc
@@ -76,7 +76,7 @@
     std::unique_ptr<std::vector<CommerceSubscription>> subscriptions,
     ManageSubscriptionsFetcherCallback callback) {
   if (subscriptions->size() == 0) {
-    std::move(callback).Run(true);
+    std::move(callback).Run(SubscriptionsRequestStatus::kSuccess);
     return;
   }
 
@@ -142,7 +142,7 @@
     std::unique_ptr<std::vector<CommerceSubscription>> subscriptions,
     ManageSubscriptionsFetcherCallback callback) {
   if (subscriptions->size() == 0) {
-    std::move(callback).Run(true);
+    std::move(callback).Run(SubscriptionsRequestStatus::kSuccess);
     return;
   }
 
@@ -211,7 +211,8 @@
   } else {
     VLOG(1) << "Unsupported type for Get query";
     std::move(callback).Run(
-        false, std::make_unique<std::vector<CommerceSubscription>>());
+        SubscriptionsRequestStatus::kInvalidArgument,
+        std::make_unique<std::vector<CommerceSubscription>>());
     return;
   }
 
@@ -273,6 +274,11 @@
     ManageSubscriptionsFetcherCallback callback,
     std::unique_ptr<EndpointFetcher> endpoint_fetcher,
     std::unique_ptr<EndpointResponse> responses) {
+  if (responses->http_status_code != net::HTTP_OK || responses->error_type) {
+    VLOG(1) << "Server failed to parse manage-subscriptions request";
+    std::move(callback).Run(SubscriptionsRequestStatus::kServerParseError);
+    return;
+  }
   data_decoder::DataDecoder::ParseJsonIsolated(
       responses->response,
       base::BindOnce(&SubscriptionsServerProxy::OnManageSubscriptionsJsonParsed,
@@ -285,15 +291,17 @@
   if (result.has_value() && result->is_dict()) {
     if (auto* status_value = result->FindKey(kStatusKey)) {
       if (auto status_code = status_value->FindIntKey(kStatusCodeKey)) {
-        std::move(callback).Run(*status_code == kBackendCanonicalCodeSuccess);
+        std::move(callback).Run(
+            *status_code == kBackendCanonicalCodeSuccess
+                ? SubscriptionsRequestStatus::kSuccess
+                : SubscriptionsRequestStatus::kServerInternalError);
         return;
       }
     }
   }
 
-  // TODO(crbug.com/1348024): Record metrics for failed parse.
   VLOG(1) << "Fail to get status code from response";
-  std::move(callback).Run(false);
+  std::move(callback).Run(SubscriptionsRequestStatus::kServerInternalError);
 }
 
 void SubscriptionsServerProxy::HandleGetSubscriptionsResponses(
@@ -301,9 +309,10 @@
     std::unique_ptr<EndpointFetcher> endpoint_fetcher,
     std::unique_ptr<EndpointResponse> responses) {
   if (responses->http_status_code != net::HTTP_OK || responses->error_type) {
-    VLOG(1) << "Fail to get subscriptions from server";
+    VLOG(1) << "Server failed to parse get-subscriptions request";
     std::move(callback).Run(
-        false, std::make_unique<std::vector<CommerceSubscription>>());
+        SubscriptionsRequestStatus::kServerParseError,
+        std::make_unique<std::vector<CommerceSubscription>>());
     return;
   }
   data_decoder::DataDecoder::ParseJsonIsolated(
@@ -324,13 +333,15 @@
         if (auto subscription = Deserialize(subscription_json))
           subscriptions->push_back(*subscription);
       }
-      std::move(callback).Run(true, std::move(subscriptions));
+      std::move(callback).Run(SubscriptionsRequestStatus::kSuccess,
+                              std::move(subscriptions));
       return;
     }
   }
 
   VLOG(1) << "User has no subscriptions";
-  std::move(callback).Run(true, std::move(subscriptions));
+  std::move(callback).Run(SubscriptionsRequestStatus::kSuccess,
+                          std::move(subscriptions));
 }
 
 base::Value SubscriptionsServerProxy::Serialize(
diff --git a/components/commerce/core/subscriptions/subscriptions_server_proxy.h b/components/commerce/core/subscriptions/subscriptions_server_proxy.h
index 56e8901..2681a9bd 100644
--- a/components/commerce/core/subscriptions/subscriptions_server_proxy.h
+++ b/components/commerce/core/subscriptions/subscriptions_server_proxy.h
@@ -12,6 +12,7 @@
 #include "base/callback.h"
 #include "base/check.h"
 #include "base/values.h"
+#include "components/commerce/core/subscriptions/subscriptions_manager.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
 #include "services/data_decoder/public/cpp/data_decoder.h"
 
@@ -31,9 +32,11 @@
 enum class SubscriptionType;
 struct CommerceSubscription;
 
-using ManageSubscriptionsFetcherCallback = base::OnceCallback<void(bool)>;
-using GetSubscriptionsFetcherCallback = base::OnceCallback<
-    void(bool, std::unique_ptr<std::vector<CommerceSubscription>>)>;
+using ManageSubscriptionsFetcherCallback =
+    base::OnceCallback<void(SubscriptionsRequestStatus)>;
+using GetSubscriptionsFetcherCallback = base::OnceCallback<void(
+    SubscriptionsRequestStatus,
+    std::unique_ptr<std::vector<CommerceSubscription>>)>;
 
 class SubscriptionsServerProxy {
  public:
diff --git a/components/commerce/core/subscriptions/subscriptions_server_proxy_unittest.cc b/components/commerce/core/subscriptions/subscriptions_server_proxy_unittest.cc
index 8c95cbf..1705674 100644
--- a/components/commerce/core/subscriptions/subscriptions_server_proxy_unittest.cc
+++ b/components/commerce/core/subscriptions/subscriptions_server_proxy_unittest.cc
@@ -183,13 +183,14 @@
       .Times(1);
 
   base::RunLoop run_loop;
-  server_proxy_->Create(BuildValidSubscriptions(),
-                        base::BindOnce(
-                            [](base::RunLoop* run_loop, bool succeeded) {
-                              ASSERT_EQ(true, succeeded);
-                              run_loop->Quit();
-                            },
-                            &run_loop));
+  server_proxy_->Create(
+      BuildValidSubscriptions(),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kSuccess, status);
+            run_loop->Quit();
+          },
+          &run_loop));
   run_loop.Run();
 }
 
@@ -198,13 +199,14 @@
   EXPECT_CALL(*server_proxy_, CreateEndpointFetcher).Times(0);
 
   base::RunLoop run_loop;
-  server_proxy_->Create(BuildEmptySubscriptions(),
-                        base::BindOnce(
-                            [](base::RunLoop* run_loop, bool succeeded) {
-                              ASSERT_EQ(true, succeeded);
-                              run_loop->Quit();
-                            },
-                            &run_loop));
+  server_proxy_->Create(
+      BuildEmptySubscriptions(),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kSuccess, status);
+            run_loop->Quit();
+          },
+          &run_loop));
   run_loop.Run();
 }
 
@@ -216,13 +218,52 @@
       .Times(1);
 
   base::RunLoop run_loop;
-  server_proxy_->Create(BuildValidSubscriptions(),
-                        base::BindOnce(
-                            [](base::RunLoop* run_loop, bool succeeded) {
-                              ASSERT_EQ(false, succeeded);
-                              run_loop->Quit();
-                            },
-                            &run_loop));
+  server_proxy_->Create(
+      BuildValidSubscriptions(),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kServerInternalError, status);
+            run_loop->Quit();
+          },
+          &run_loop));
+  run_loop.Run();
+}
+
+TEST_F(SubscriptionsServerProxyTest, TestCreate_WrongHttpCode) {
+  fetcher_->MockFetchResponse(kResponseSucceeded, net::HTTP_NOT_FOUND);
+  EXPECT_CALL(*server_proxy_,
+              CreateEndpointFetcher(GURL(kServiceUrl), kPostHttpMethod,
+                                    kExpectedPostDataForCreate, _))
+      .Times(1);
+
+  base::RunLoop run_loop;
+  server_proxy_->Create(
+      BuildValidSubscriptions(),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kServerParseError, status);
+            run_loop->Quit();
+          },
+          &run_loop));
+  run_loop.Run();
+}
+
+TEST_F(SubscriptionsServerProxyTest, TestCreate_EmptyResponse) {
+  fetcher_->MockFetchResponse("");
+  EXPECT_CALL(*server_proxy_,
+              CreateEndpointFetcher(GURL(kServiceUrl), kPostHttpMethod,
+                                    kExpectedPostDataForCreate, _))
+      .Times(1);
+
+  base::RunLoop run_loop;
+  server_proxy_->Create(
+      BuildValidSubscriptions(),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kServerInternalError, status);
+            run_loop->Quit();
+          },
+          &run_loop));
   run_loop.Run();
 }
 
@@ -234,13 +275,14 @@
       .Times(1);
 
   base::RunLoop run_loop;
-  server_proxy_->Delete(BuildValidSubscriptions(),
-                        base::BindOnce(
-                            [](base::RunLoop* run_loop, bool succeeded) {
-                              ASSERT_EQ(true, succeeded);
-                              run_loop->Quit();
-                            },
-                            &run_loop));
+  server_proxy_->Delete(
+      BuildValidSubscriptions(),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kSuccess, status);
+            run_loop->Quit();
+          },
+          &run_loop));
   run_loop.Run();
 }
 
@@ -249,13 +291,14 @@
   EXPECT_CALL(*server_proxy_, CreateEndpointFetcher).Times(0);
 
   base::RunLoop run_loop;
-  server_proxy_->Delete(BuildEmptySubscriptions(),
-                        base::BindOnce(
-                            [](base::RunLoop* run_loop, bool succeeded) {
-                              ASSERT_EQ(true, succeeded);
-                              run_loop->Quit();
-                            },
-                            &run_loop));
+  server_proxy_->Delete(
+      BuildEmptySubscriptions(),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kSuccess, status);
+            run_loop->Quit();
+          },
+          &run_loop));
   run_loop.Run();
 }
 
@@ -267,13 +310,14 @@
       .Times(1);
 
   base::RunLoop run_loop;
-  server_proxy_->Delete(BuildValidSubscriptions(),
-                        base::BindOnce(
-                            [](base::RunLoop* run_loop, bool succeeded) {
-                              ASSERT_EQ(false, succeeded);
-                              run_loop->Quit();
-                            },
-                            &run_loop));
+  server_proxy_->Delete(
+      BuildValidSubscriptions(),
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kServerInternalError, status);
+            run_loop->Quit();
+          },
+          &run_loop));
   run_loop.Run();
 }
 
@@ -288,9 +332,9 @@
   server_proxy_->Get(
       SubscriptionType::kPriceTrack,
       base::BindOnce(
-          [](base::RunLoop* run_loop, bool succeeded,
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status,
              std::unique_ptr<std::vector<CommerceSubscription>> subscriptions) {
-            ASSERT_EQ(true, succeeded);
+            ASSERT_EQ(SubscriptionsRequestStatus::kSuccess, status);
             ASSERT_EQ(1, static_cast<int>(subscriptions->size()));
             auto subscription = (*subscriptions)[0];
             ASSERT_EQ(SubscriptionType::kPriceTrack, subscription.type);
@@ -314,9 +358,9 @@
   server_proxy_->Get(
       SubscriptionType::kTypeUnspecified,
       base::BindOnce(
-          [](base::RunLoop* run_loop, bool succeeded,
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status,
              std::unique_ptr<std::vector<CommerceSubscription>> subscriptions) {
-            ASSERT_EQ(false, succeeded);
+            ASSERT_EQ(SubscriptionsRequestStatus::kInvalidArgument, status);
             ASSERT_EQ(0, static_cast<int>(subscriptions->size()));
             run_loop->Quit();
           },
@@ -335,9 +379,9 @@
   server_proxy_->Get(
       SubscriptionType::kPriceTrack,
       base::BindOnce(
-          [](base::RunLoop* run_loop, bool succeeded,
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status,
              std::unique_ptr<std::vector<CommerceSubscription>> subscriptions) {
-            ASSERT_EQ(false, succeeded);
+            ASSERT_EQ(SubscriptionsRequestStatus::kServerParseError, status);
             ASSERT_EQ(0, static_cast<int>(subscriptions->size()));
             run_loop->Quit();
           },
@@ -358,9 +402,9 @@
   server_proxy_->Get(
       SubscriptionType::kPriceTrack,
       base::BindOnce(
-          [](base::RunLoop* run_loop, bool succeeded,
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status,
              std::unique_ptr<std::vector<CommerceSubscription>> subscriptions) {
-            ASSERT_EQ(false, succeeded);
+            ASSERT_EQ(SubscriptionsRequestStatus::kServerParseError, status);
             ASSERT_EQ(0, static_cast<int>(subscriptions->size()));
             run_loop->Quit();
           },
@@ -379,9 +423,9 @@
   server_proxy_->Get(
       SubscriptionType::kPriceTrack,
       base::BindOnce(
-          [](base::RunLoop* run_loop, bool succeeded,
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status,
              std::unique_ptr<std::vector<CommerceSubscription>> subscriptions) {
-            ASSERT_EQ(true, succeeded);
+            ASSERT_EQ(SubscriptionsRequestStatus::kSuccess, status);
             ASSERT_EQ(0, static_cast<int>(subscriptions->size()));
             run_loop->Quit();
           },
diff --git a/components/commerce/core/subscriptions/subscriptions_storage.cc b/components/commerce/core/subscriptions/subscriptions_storage.cc
index 7fce960..d8517e47 100644
--- a/components/commerce/core/subscriptions/subscriptions_storage.cc
+++ b/components/commerce/core/subscriptions/subscriptions_storage.cc
@@ -46,7 +46,7 @@
 
 void SubscriptionsStorage::UpdateStorage(
     SubscriptionType type,
-    base::OnceCallback<void(bool)> callback,
+    StorageOperationCallback callback,
     std::unique_ptr<std::vector<CommerceSubscription>> remote_subscriptions) {
   LoadAllSubscriptionsForType(
       type, base::BindOnce(&SubscriptionsStorage::PerformUpdateStorage,
@@ -68,8 +68,9 @@
          subscription.id;
 }
 
-void SubscriptionsStorage::SaveSubscription(CommerceSubscription subscription,
-                                            StorageOperationCallback callback) {
+void SubscriptionsStorage::SaveSubscription(
+    CommerceSubscription subscription,
+    base::OnceCallback<void(bool)> callback) {
   // Get proto types from the object.
   SubscriptionTypeProto subscription_type = commerce_subscription_db::
       CommerceSubscriptionContentProto_SubscriptionType_TYPE_UNSPECIFIED;
@@ -112,7 +113,7 @@
 
 void SubscriptionsStorage::DeleteSubscription(
     CommerceSubscription subscription,
-    StorageOperationCallback callback) {
+    base::OnceCallback<void(bool)> callback) {
   proto_db_->DeleteOneEntry(GetSubscriptionKey(subscription),
                             std::move(callback));
 }
@@ -223,7 +224,9 @@
                            &all_succeeded));
     }
   }
-  std::move(callback).Run(all_succeeded);
+  std::move(callback).Run(all_succeeded
+                              ? SubscriptionsRequestStatus::kSuccess
+                              : SubscriptionsRequestStatus::kStorageError);
 }
 
 void SubscriptionsStorage::IsSubscribed(
diff --git a/components/commerce/core/subscriptions/subscriptions_storage.h b/components/commerce/core/subscriptions/subscriptions_storage.h
index 16b3c169..632b51f 100644
--- a/components/commerce/core/subscriptions/subscriptions_storage.h
+++ b/components/commerce/core/subscriptions/subscriptions_storage.h
@@ -12,6 +12,7 @@
 #include "base/callback.h"
 #include "base/check.h"
 #include "components/commerce/core/proto/commerce_subscription_db_content.pb.h"
+#include "components/commerce/core/subscriptions/subscriptions_manager.h"
 #include "components/session_proto_db/session_proto_storage.h"
 
 namespace commerce {
@@ -23,7 +24,8 @@
 using GetLocalSubscriptionsCallback = base::OnceCallback<void(
     std::unique_ptr<std::vector<CommerceSubscription>>)>;
 // Used to handle if storage-related operation succeeds.
-using StorageOperationCallback = base::OnceCallback<void(bool)>;
+using StorageOperationCallback =
+    base::OnceCallback<void(SubscriptionsRequestStatus)>;
 
 using CommerceSubscriptionProto =
     commerce_subscription_db::CommerceSubscriptionContentProto;
@@ -76,10 +78,10 @@
   std::string GetSubscriptionKey(const CommerceSubscription& subscription);
 
   void SaveSubscription(CommerceSubscription subscription,
-                        StorageOperationCallback callback);
+                        base::OnceCallback<void(bool)> callback);
 
   void DeleteSubscription(CommerceSubscription subscription,
-                          StorageOperationCallback callback);
+                          base::OnceCallback<void(bool)> callback);
 
   void LoadAllSubscriptionsForType(SubscriptionType type,
                                    GetLocalSubscriptionsCallback callback);
diff --git a/components/commerce/core/subscriptions/subscriptions_storage_unittest.cc b/components/commerce/core/subscriptions/subscriptions_storage_unittest.cc
index 01ec499..b0774323 100644
--- a/components/commerce/core/subscriptions/subscriptions_storage_unittest.cc
+++ b/components/commerce/core/subscriptions/subscriptions_storage_unittest.cc
@@ -298,14 +298,15 @@
   }
 
   base::RunLoop run_loop;
-  storage_->UpdateStorage(SubscriptionType::kPriceTrack,
-                          base::BindOnce(
-                              [](base::RunLoop* run_loop, bool succeeded) {
-                                ASSERT_EQ(true, succeeded);
-                                run_loop->Quit();
-                              },
-                              &run_loop),
-                          MockRemoteSubscriptions());
+  storage_->UpdateStorage(
+      SubscriptionType::kPriceTrack,
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kSuccess, status);
+            run_loop->Quit();
+          },
+          &run_loop),
+      MockRemoteSubscriptions());
   run_loop.Run();
 }
 
@@ -322,14 +323,15 @@
   }
 
   base::RunLoop run_loop;
-  storage_->UpdateStorage(SubscriptionType::kPriceTrack,
-                          base::BindOnce(
-                              [](base::RunLoop* run_loop, bool succeeded) {
-                                ASSERT_EQ(true, succeeded);
-                                run_loop->Quit();
-                              },
-                              &run_loop),
-                          MockRemoteSubscriptions());
+  storage_->UpdateStorage(
+      SubscriptionType::kPriceTrack,
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kSuccess, status);
+            run_loop->Quit();
+          },
+          &run_loop),
+      MockRemoteSubscriptions());
   run_loop.Run();
 }
 
@@ -345,14 +347,15 @@
   }
 
   base::RunLoop run_loop;
-  storage_->UpdateStorage(SubscriptionType::kPriceTrack,
-                          base::BindOnce(
-                              [](base::RunLoop* run_loop, bool succeeded) {
-                                ASSERT_EQ(false, succeeded);
-                                run_loop->Quit();
-                              },
-                              &run_loop),
-                          MockRemoteSubscriptions());
+  storage_->UpdateStorage(
+      SubscriptionType::kPriceTrack,
+      base::BindOnce(
+          [](base::RunLoop* run_loop, SubscriptionsRequestStatus status) {
+            ASSERT_EQ(SubscriptionsRequestStatus::kStorageError, status);
+            run_loop->Quit();
+          },
+          &run_loop),
+      MockRemoteSubscriptions());
   run_loop.Run();
 }
 
diff --git a/components/embedder_support/android/metrics/android_metrics_service_client.cc b/components/embedder_support/android/metrics/android_metrics_service_client.cc
index fcef6f0b..3344e7d 100644
--- a/components/embedder_support/android/metrics/android_metrics_service_client.cc
+++ b/components/embedder_support/android/metrics/android_metrics_service_client.cc
@@ -37,7 +37,6 @@
 #include "components/metrics/drive_metrics_provider.h"
 #include "components/metrics/entropy_state_provider.h"
 #include "components/metrics/file_metrics_provider.h"
-#include "components/metrics/form_factor_metrics_provider.h"
 #include "components/metrics/metrics_pref_names.h"
 #include "components/metrics/metrics_service.h"
 #include "components/metrics/metrics_state_manager.h"
@@ -47,6 +46,7 @@
 #include "components/metrics/persistent_histograms.h"
 #include "components/metrics/sampling_metrics_provider.h"
 #include "components/metrics/stability_metrics_helper.h"
+#include "components/metrics/ui/form_factor_metrics_provider.h"
 #include "components/metrics/ui/screen_info_metrics_provider.h"
 #include "components/metrics/version_utils.h"
 #include "components/prefs/pref_service.h"
diff --git a/components/exo/surface_unittest.cc b/components/exo/surface_unittest.cc
index 084aa267..a63e9b6c 100644
--- a/components/exo/surface_unittest.cc
+++ b/components/exo/surface_unittest.cc
@@ -1248,7 +1248,7 @@
     // To get 32,32 -> 160,160 into the correct position it must be translated
     // backwards and scaled 0.5x in Y, then everything is scaled by the scale
     // factor.
-    auto expected_transform = gfx::Transform(
+    auto expected_transform = gfx::Transform::Affine(
         1.0f * device_scale_factor(), 0.0f, 0.0f, 0.5f * device_scale_factor(),
         -32.0f * device_scale_factor(), -32.0f * device_scale_factor() * 0.5f);
 
diff --git a/components/gwp_asan/BUILD.gn b/components/gwp_asan/BUILD.gn
index c5540da..86778dfb 100644
--- a/components/gwp_asan/BUILD.gn
+++ b/components/gwp_asan/BUILD.gn
@@ -13,6 +13,7 @@
     "//base/test:run_all_unittests",
     "//components/gwp_asan/common:unit_tests",
     "//testing/gtest",
+    "//third_party/boringssl",
   ]
   if (is_win || is_mac || is_linux || is_chromeos || is_android) {
     deps += [
diff --git a/components/gwp_asan/DEPS b/components/gwp_asan/DEPS
new file mode 100644
index 0000000..859cc4e7e
--- /dev/null
+++ b/components/gwp_asan/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  "+third_party/boringssl/src/include",
+]
diff --git a/components/gwp_asan/client/sampling_state.h b/components/gwp_asan/client/sampling_state.h
index ceb6f19..53ab6f3d 100644
--- a/components/gwp_asan/client/sampling_state.h
+++ b/components/gwp_asan/client/sampling_state.h
@@ -10,8 +10,8 @@
 #include <random>
 
 #include "base/compiler_specific.h"
-#include "base/rand_util.h"
 #include "build/build_config.h"
+#include "third_party/boringssl/src/include/openssl/rand.h"
 
 #if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_ANDROID)
 #define USE_PTHREAD_TLS
@@ -26,6 +26,23 @@
   PARTITIONALLOC = 1,
 };
 
+class RandomBitGenerator {
+ public:
+  using result_type = uint64_t;
+  static constexpr result_type min() { return 0; }
+  static constexpr result_type max() { return UINT64_MAX; }
+  result_type operator()() const {
+    uint64_t result;
+    // To avoid infinite recursion use non-allocating RNG from BoringSSL.
+    RAND_get_system_entropy_for_custom_prng(reinterpret_cast<uint8_t*>(&result),
+                                            sizeof(result));
+    return result;
+  }
+
+  RandomBitGenerator() = default;
+  ~RandomBitGenerator() = default;
+};
+
 // Class that encapsulates the current sampling state. Sampling is performed
 // using a counter stored in thread-local storage.
 //
@@ -65,7 +82,7 @@
   // Sample an allocation on every average one out of every
   // |sampling_frequency_| allocations.
   size_t NextSample() {
-    base::RandomBitGenerator generator;
+    RandomBitGenerator generator;
     std::geometric_distribution<size_t> distribution(sampling_probability_);
     return distribution(generator) + 1;
   }
diff --git a/components/history/core/browser/BUILD.gn b/components/history/core/browser/BUILD.gn
index 741f5dd..b0a995a4 100644
--- a/components/history/core/browser/BUILD.gn
+++ b/components/history/core/browser/BUILD.gn
@@ -174,6 +174,7 @@
     "//components/test/data/history/TopSites.v2.sql",
     "//components/test/data/history/TopSites.v3.sql",
     "//components/test/data/history/TopSites.v4.sql",
+    "//components/test/data/history/TopSites.v5.sql",
     "//components/test/data/history/history.22.sql",
     "//components/test/data/history/history.26.sql",
     "//components/test/data/history/history.27.sql",
diff --git a/components/history/core/browser/top_sites_database.cc b/components/history/core/browser/top_sites_database.cc
index 9a17280..ea3a4f0 100644
--- a/components/history/core/browser/top_sites_database.cc
+++ b/components/history/core/browser/top_sites_database.cc
@@ -34,9 +34,6 @@
 //   url_rank         Index of the site, 0-based. The site with the highest rank
 //                    will be the next one evicted.
 //   title            The title to display under that site.
-//   redirects        A space separated list of URLs that are known to redirect
-//                    to this url. As of 9/2019 this column is not used. It will
-//                    be removed shortly.
 
 namespace {
 
@@ -48,6 +45,7 @@
 // fatal (in fact, very old data may be expired immediately at startup
 // anyhow).
 
+// Version 5: TODO apaseltiner@chromium.org on 2022-09-21
 // Version 4: 95af34ec/r618360 kristipark@chromium.org on 2018-12-20
 // Version 3: b6d6a783/r231648 by beaudoin@chromium.org on 2013-10-29
 // Version 2: eb0b24e6/r87284 by satorux@chromium.org on 2011-05-31 (deprecated)
@@ -55,7 +53,7 @@
 
 // NOTE(shess): When changing the version, add a new golden file for
 // the new version and a test to verify that Init() works with it.
-static const int kVersionNumber = 4;
+static const int kVersionNumber = 5;
 static const int kDeprecatedVersionNumber = 3;  // and earlier.
 
 // Rank used to indicate that this is a newly added URL.
@@ -64,10 +62,9 @@
 bool InitTables(sql::Database* db) {
   static constexpr char kTopSitesSql[] =
       "CREATE TABLE IF NOT EXISTS top_sites("
-      "url LONGVARCHAR PRIMARY KEY,"
-      "url_rank INTEGER,"
-      "title LONGVARCHAR,"
-      "redirects LONGVARCHAR)";
+      "url TEXT NOT NULL PRIMARY KEY,"
+      "url_rank INTEGER NOT NULL,"
+      "title TEXT NOT NULL)";
   return db->Execute(kTopSitesSql);
 }
 
@@ -159,7 +156,7 @@
 // constraints.
 void RecoverAndFixup(sql::Database* db, const base::FilePath& db_path) {
   // NOTE(shess): If the version changes, review this code.
-  DCHECK_EQ(4, kVersionNumber);
+  DCHECK_EQ(5, kVersionNumber);
 
   std::unique_ptr<sql::Recovery> recovery =
       sql::Recovery::BeginRecoverDatabase(db, db_path);
@@ -284,6 +281,40 @@
   return false;
 }
 
+bool TopSitesDatabase::UpgradeToVersion5(sql::MetaTable& meta_table) {
+  DCHECK(db_);
+  DCHECK(db_->HasActiveTransactions());
+  DCHECK_EQ(4, meta_table.GetVersionNumber());
+
+  static constexpr char kCreateSql[] =
+      "CREATE TABLE new_top_sites("
+      "url TEXT NOT NULL PRIMARY KEY,"
+      "url_rank INTEGER NOT NULL,"
+      "title TEXT NOT NULL)";
+  if (!db_->Execute(kCreateSql))
+    return false;
+
+  static constexpr char kMigrateSql[] =
+      "INSERT INTO new_top_sites(url,url_rank,title)"
+      "SELECT url,url_rank,title FROM top_sites "
+      "WHERE url IS NOT NULL AND url_rank IS NOT NULL AND title IS NOT NULL";
+  if (!db_->Execute(kMigrateSql))
+    return false;
+
+  static constexpr char kDropSql[] = "DROP TABLE top_sites";
+  if (!db_->Execute(kDropSql))
+    return false;
+
+  static constexpr char kRenameSql[] =
+      "ALTER TABLE new_top_sites "
+      "RENAME TO top_sites";
+  if (!db_->Execute(kRenameSql))
+    return false;
+
+  meta_table.SetVersionNumber(5);
+  return true;
+}
+
 bool TopSitesDatabase::InitImpl(const base::FilePath& db_name) {
   const bool file_existed = base::PathExists(db_name);
 
@@ -327,6 +358,11 @@
   if (!InitTables(db_.get()))
     return false;
 
+  if (meta_table.GetVersionNumber() == 4) {
+    if (!UpgradeToVersion5(meta_table))
+      return false;
+  }
+
   // Version check.
   if (meta_table.GetVersionNumber() != kVersionNumber)
     return false;
diff --git a/components/history/core/browser/top_sites_database.h b/components/history/core/browser/top_sites_database.h
index 5bb66a1..c685aaa 100644
--- a/components/history/core/browser/top_sites_database.h
+++ b/components/history/core/browser/top_sites_database.h
@@ -17,6 +17,7 @@
 
 namespace sql {
 class Database;
+class MetaTable;
 class Statement;
 }  // namespace sql
 
@@ -88,6 +89,9 @@
   bool InitImpl(const base::FilePath& db_name)
       VALID_CONTEXT_REQUIRED(sequence_checker_);
 
+  [[nodiscard]] bool UpgradeToVersion5(sql::MetaTable&)
+      VALID_CONTEXT_REQUIRED(sequence_checker_);
+
   void DatabaseErrorCallback(const base::FilePath& db_path,
                              int extended_error,
                              sql::Statement* stmt);
diff --git a/components/history/core/browser/top_sites_database_unittest.cc b/components/history/core/browser/top_sites_database_unittest.cc
index 79842e6..b8c68de 100644
--- a/components/history/core/browser/top_sites_database_unittest.cc
+++ b/components/history/core/browser/top_sites_database_unittest.cc
@@ -37,8 +37,8 @@
   // [key] and [value].
   EXPECT_EQ(2u, sql::test::CountTableColumns(db, "meta"));
 
-  // [url], [url_rank], [title], [redirects]
-  EXPECT_EQ(4u, sql::test::CountTableColumns(db, "top_sites"));
+  // [url], [url_rank], [title]
+  EXPECT_EQ(3u, sql::test::CountTableColumns(db, "top_sites"));
 }
 
 void VerifyDatabaseEmpty(sql::Database* db) {
@@ -130,6 +130,28 @@
   ASSERT_EQ(2u, urls.size());
 }
 
+TEST_F(TopSitesDatabaseTest, Version5) {
+  ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v5.sql"));
+
+  TopSitesDatabase db;
+  ASSERT_TRUE(db.Init(file_name_));
+
+  VerifyTablesAndColumns(db.db_for_testing());
+
+  // Basic operational check.
+  MostVisitedURLList urls = db.GetSites();
+  ASSERT_EQ(3u, urls.size());
+  EXPECT_EQ(kUrl0, urls[0].url);  // [0] because of url_rank.
+
+  sql::Transaction transaction(db.db_for_testing());
+  ASSERT_TRUE(transaction.Begin());
+  ASSERT_TRUE(db.RemoveURLNoTransactionForTesting(urls[1]));
+  ASSERT_TRUE(transaction.Commit());
+
+  urls = db.GetSites();
+  ASSERT_EQ(2u, urls.size());
+}
+
 // Version 1 is deprecated, the resulting schema should be current, with no
 // data.
 TEST_F(TopSitesDatabaseTest, Recovery1) {
@@ -242,11 +264,11 @@
   }
 }
 
-TEST_F(TopSitesDatabaseTest, Recovery4_CorruptIndex) {
+TEST_F(TopSitesDatabaseTest, Recovery5_CorruptIndex) {
   // Create an example database.
-  ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v4.sql"));
+  ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v5.sql"));
 
-  // Corrupt the thumnails.url auto-index.
+  // Corrupt the top_sites.url auto-index.
   static const char kIndexName[] = "sqlite_autoindex_top_sites_1";
   EXPECT_TRUE(sql::test::CorruptIndexRootPage(file_name_, kIndexName));
 
@@ -307,9 +329,9 @@
   }
 }
 
-TEST_F(TopSitesDatabaseTest, Recovery4_CorruptIndexAndLostRow) {
+TEST_F(TopSitesDatabaseTest, Recovery5_CorruptIndexAndLostRow) {
   // Create an example database.
-  ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v4.sql"));
+  ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v5.sql"));
 
   // Delete a row.
   {
@@ -319,7 +341,7 @@
         raw_db.Execute("DELETE FROM top_sites WHERE url = "
                        "'http://www.google.com/chrome/intl/en/welcome.html'"));
   }
-  // Corrupt the thumnails.url auto-index.
+  // Corrupt the top_sites.url auto-index.
   static const char kIndexName[] = "sqlite_autoindex_top_sites_1";
   EXPECT_TRUE(sql::test::CorruptIndexRootPage(file_name_, kIndexName));
 
diff --git a/components/lens/lens_features.cc b/components/lens/lens_features.cc
index c308ed2b..761f16c 100644
--- a/components/lens/lens_features.cc
+++ b/components/lens/lens_features.cc
@@ -10,32 +10,41 @@
 namespace lens {
 namespace features {
 
-const base::Feature kLensStandalone{"LensStandalone",
-                                    base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kLensStandalone,
+             "LensStandalone",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kLensImageCompression{"LensImageCompression",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kLensImageCompression,
+             "LensImageCompression",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kLensSearchOptimizations{"LensSearchOptimizations",
-                                             base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLensSearchOptimizations,
+             "LensSearchOptimizations",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kLensTransparentImagesFix{
-    "LensTransparentImagesFix", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLensTransparentImagesFix,
+             "LensTransparentImagesFix",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kLensSearchImageInScreenshotSharing{
-    "LensSearchImageInScreenshotSharing", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLensSearchImageInScreenshotSharing,
+             "LensSearchImageInScreenshotSharing",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kLensUnifiedSidePanelFooter{
-    "LensUnifiedSidePanelFooter", base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kLensUnifiedSidePanelFooter,
+             "LensUnifiedSidePanelFooter",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kEnableLatencyLogging{"LensImageLatencyLogging",
-                                          base::FEATURE_ENABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableLatencyLogging,
+             "LensImageLatencyLogging",
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
-const base::Feature kEnableRegionSearchOnPdfViewer{
-    "LensEnableRegionSearchOnPdfViewer", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kEnableRegionSearchOnPdfViewer,
+             "LensEnableRegionSearchOnPdfViewer",
+             base::FEATURE_DISABLED_BY_DEFAULT);
 
-const base::Feature kLensInstructionChipImprovements{
-    "LensInstructionChipImprovements", base::FEATURE_DISABLED_BY_DEFAULT};
+BASE_FEATURE(kLensInstructionChipImprovements,
+             "LensInstructionChipImprovements",
+             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 91424f1..d2ebb12 100644
--- a/components/lens/lens_features.h
+++ b/components/lens/lens_features.h
@@ -14,31 +14,31 @@
 namespace features {
 
 // Enables context menu search by image sending to the Lens homepage.
-extern const base::Feature kLensStandalone;
+BASE_DECLARE_FEATURE(kLensStandalone);
 
 // Feature that controls the compression of images before they are sent to Lens.
-extern const base::Feature kLensImageCompression;
+BASE_DECLARE_FEATURE(kLensImageCompression);
 
 // Enables a variety of changes aimed to improve user's engagement with current
 // Lens features.
-extern const base::Feature kLensSearchOptimizations;
+BASE_DECLARE_FEATURE(kLensSearchOptimizations);
 
 // Enables a fix to properly handle transparent images in Lens Image Search
-extern const base::Feature kLensTransparentImagesFix;
+BASE_DECLARE_FEATURE(kLensTransparentImagesFix);
 
 // Enables Lens integration into the Chrome screenshot sharing feature by adding
 // a "Search Image" button.
-extern const base::Feature kLensSearchImageInScreenshotSharing;
+BASE_DECLARE_FEATURE(kLensSearchImageInScreenshotSharing);
 
 // Enables Latency logging for the LensStandalone feature.
-extern const base::Feature kEnableLatencyLogging;
+BASE_DECLARE_FEATURE(kEnableLatencyLogging);
 
 // Enable the Lens Region Search feature on the PDF viewer.
-extern const base::Feature kEnableRegionSearchOnPdfViewer;
+BASE_DECLARE_FEATURE(kEnableRegionSearchOnPdfViewer);
 
 // Enables the modification of the instruction chip UI that is presented when
 // region search is opened.
-extern const base::Feature kLensInstructionChipImprovements;
+BASE_DECLARE_FEATURE(kLensInstructionChipImprovements);
 
 // Enables using `Google` as the visual search provider instead of `Google
 // Lens`.
@@ -69,7 +69,7 @@
 extern const base::FeatureParam<bool> kEnableLensHtmlRedirectFix;
 
 // Enables footer for the unified side panel
-extern const base::Feature kLensUnifiedSidePanelFooter;
+BASE_DECLARE_FEATURE(kLensUnifiedSidePanelFooter);
 
 // Enables Lens fullscreen search on Desktop platforms.
 extern const base::FeatureParam<bool> kEnableFullscreenSearch;
diff --git a/components/live_caption/live_caption_controller.cc b/components/live_caption/live_caption_controller.cc
index 4be5927..a41b22d 100644
--- a/components/live_caption/live_caption_controller.cc
+++ b/components/live_caption/live_caption_controller.cc
@@ -74,6 +74,16 @@
   registry->RegisterListPref(
       prefs::kLiveCaptionMediaFoundationRendererErrorSilenced,
       user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+
+  if (base::FeatureList::IsEnabled(media::kLiveTranslate)) {
+    registry->RegisterBooleanPref(
+        prefs::kLiveTranslateEnabled, false,
+        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+
+    registry->RegisterStringPref(
+        prefs::kLiveTranslateTargetLanguageCode, speech::kUsEnglishLocale,
+        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+  }
 }
 
 void LiveCaptionController::Init() {
diff --git a/components/live_caption/pref_names.cc b/components/live_caption/pref_names.cc
index 2a5b7ddc..f5c11404 100644
--- a/components/live_caption/pref_names.cc
+++ b/components/live_caption/pref_names.cc
@@ -84,4 +84,12 @@
 const char kAccessibilityCaptionsBackgroundOpacity[] =
     "accessibility.captions.background_opacity";
 
+// Whether the Live Translate feature is enabled.
+const char kLiveTranslateEnabled[] =
+    "accessibility.captions.live_translate_enabled";
+
+// The target language to translate the captions to.
+const char kLiveTranslateTargetLanguageCode[] =
+    "accessibility.captions.live_translate_target_language";
+
 }  // namespace prefs
diff --git a/components/live_caption/pref_names.h b/components/live_caption/pref_names.h
index 83428cf..688df18 100644
--- a/components/live_caption/pref_names.h
+++ b/components/live_caption/pref_names.h
@@ -43,6 +43,10 @@
 extern const char kAccessibilityCaptionsTextShadow[];
 extern const char kAccessibilityCaptionsBackgroundOpacity[];
 
+// Live Translate prefs.
+extern const char kLiveTranslateEnabled[];
+extern const char kLiveTranslateTargetLanguageCode[];
+
 }  // namespace prefs
 
 #endif  // COMPONENTS_LIVE_CAPTION_PREF_NAMES_H_
diff --git a/components/live_caption/views/caption_bubble.cc b/components/live_caption/views/caption_bubble.cc
index 12d7101..4f8d527 100644
--- a/components/live_caption/views/caption_bubble.cc
+++ b/components/live_caption/views/caption_bubble.cc
@@ -356,7 +356,7 @@
     ui::AXNodeData& ax_node_data = ax_lines[line_index]->GetCustomData();
     if (base::UTF8ToUTF16(ax_node_data.GetStringAttribute(
             ax::mojom::StringAttribute::kName)) != line_text) {
-      ax_node_data.SetName(line_text);
+      ax_node_data.SetNameChecked(line_text);
       std::vector<gfx::Rect> bounds = GetSubstringBounds(text_range);
       ax_node_data.relative_bounds.bounds = gfx::RectF(bounds[0]);
       ax_lines[line_index]->NotifyAccessibilityEvent(
@@ -671,7 +671,7 @@
 
 void CaptionBubble::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   node_data->role = ax::mojom::Role::kDialog;
-  node_data->SetName(title_->GetText());
+  node_data->SetNameChecked(title_->GetText());
 }
 
 std::u16string CaptionBubble::GetAccessibleWindowTitle() const {
diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn
index ccc7abb..0fedd11d 100644
--- a/components/metrics/BUILD.gn
+++ b/components/metrics/BUILD.gn
@@ -49,8 +49,6 @@
     "field_trials_provider.h",
     "file_metrics_provider.cc",
     "file_metrics_provider.h",
-    "form_factor_metrics_provider.cc",
-    "form_factor_metrics_provider.h",
     "log_decoder.cc",
     "log_decoder.h",
     "log_store.h",
@@ -137,7 +135,6 @@
     "//crypto",
     "//extensions/buildflags",
     "//third_party/icu",
-    "//ui/base",
     "//url",
   ]
 
@@ -335,6 +332,8 @@
 
 static_library("ui") {
   sources = [
+    "ui/form_factor_metrics_provider.cc",
+    "ui/form_factor_metrics_provider.h",
     "ui/screen_info_metrics_provider.cc",
     "ui/screen_info_metrics_provider.h",
   ]
@@ -342,6 +341,7 @@
   public_deps = [ ":metrics" ]
   deps = [
     "//base",
+    "//ui/base",
     "//ui/display",
     "//ui/gfx",
     "//ui/gfx/geometry",
@@ -474,7 +474,6 @@
     "expired_histograms_checker_unittest.cc",
     "field_trials_provider_unittest.cc",
     "file_metrics_provider_unittest.cc",
-    "form_factor_metrics_provider_unittest.cc",
     "histogram_encoder_unittest.cc",
     "library_support/histogram_manager_unittest.cc",
     "log_decoder_unittest.cc",
@@ -492,6 +491,7 @@
     "single_sample_metrics_factory_impl_unittest.cc",
     "stability_metrics_helper_unittest.cc",
     "stability_metrics_provider_unittest.cc",
+    "ui/form_factor_metrics_provider_unittest.cc",
     "ui/screen_info_metrics_provider_unittest.cc",
     "unsent_log_store_metrics_impl_unittest.cc",
     "unsent_log_store_unittest.cc",
diff --git a/components/metrics/DEPS b/components/metrics/DEPS
index bf72c0c4..053c69b 100644
--- a/components/metrics/DEPS
+++ b/components/metrics/DEPS
@@ -19,7 +19,6 @@
   "+third_party/metrics_proto",
   "+third_party/zlib/google",
   "-net",
-  "+ui/base",
   "+url",
 ]
 
diff --git a/components/metrics/ui/DEPS b/components/metrics/ui/DEPS
index e141313..f28912e 100644
--- a/components/metrics/ui/DEPS
+++ b/components/metrics/ui/DEPS
@@ -1,4 +1,5 @@
 include_rules = [
+  "+ui/base",
   "+ui/display",
   "+ui/gfx",
 ]
diff --git a/components/metrics/form_factor_metrics_provider.cc b/components/metrics/ui/form_factor_metrics_provider.cc
similarity index 95%
rename from components/metrics/form_factor_metrics_provider.cc
rename to components/metrics/ui/form_factor_metrics_provider.cc
index afcc191..2086265 100644
--- a/components/metrics/form_factor_metrics_provider.cc
+++ b/components/metrics/ui/form_factor_metrics_provider.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/metrics/form_factor_metrics_provider.h"
+#include "components/metrics/ui/form_factor_metrics_provider.h"
 
 #include "build/build_config.h"
 #include "ui/base/device_form_factor.h"
diff --git a/components/metrics/form_factor_metrics_provider.h b/components/metrics/ui/form_factor_metrics_provider.h
similarity index 83%
rename from components/metrics/form_factor_metrics_provider.h
rename to components/metrics/ui/form_factor_metrics_provider.h
index 82fc90a..7e93eb1 100644
--- a/components/metrics/form_factor_metrics_provider.h
+++ b/components/metrics/ui/form_factor_metrics_provider.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_METRICS_FORM_FACTOR_METRICS_PROVIDER_H_
-#define COMPONENTS_METRICS_FORM_FACTOR_METRICS_PROVIDER_H_
+#ifndef COMPONENTS_METRICS_UI_FORM_FACTOR_METRICS_PROVIDER_H_
+#define COMPONENTS_METRICS_UI_FORM_FACTOR_METRICS_PROVIDER_H_
 
 #include "components/metrics/metrics_provider.h"
 #include "third_party/metrics_proto/system_profile.pb.h"
@@ -32,4 +32,4 @@
 
 }  // namespace metrics
 
-#endif  // COMPONENTS_METRICS_FORM_FACTOR_METRICS_PROVIDER_H_
+#endif  // COMPONENTS_METRICS_UI_FORM_FACTOR_METRICS_PROVIDER_H_
diff --git a/components/metrics/form_factor_metrics_provider_unittest.cc b/components/metrics/ui/form_factor_metrics_provider_unittest.cc
similarity index 95%
rename from components/metrics/form_factor_metrics_provider_unittest.cc
rename to components/metrics/ui/form_factor_metrics_provider_unittest.cc
index ea32a4b..f3aae5ba 100644
--- a/components/metrics/form_factor_metrics_provider_unittest.cc
+++ b/components/metrics/ui/form_factor_metrics_provider_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/metrics/form_factor_metrics_provider.h"
+#include "components/metrics/ui/form_factor_metrics_provider.h"
 
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/metrics_proto/system_profile.pb.h"
diff --git a/components/mirroring/service/remoting_sender.cc b/components/mirroring/service/remoting_sender.cc
index e04eac0..56ca9cc7 100644
--- a/components/mirroring/service/remoting_sender.cc
+++ b/components/mirroring/service/remoting_sender.cc
@@ -18,8 +18,11 @@
 #include "media/cast/constants.h"
 #include "media/cast/sender/openscreen_frame_sender.h"
 #include "media/mojo/common/mojo_data_pipe_read_write.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 #include "third_party/openscreen/src/cast/streaming/sender.h"
 
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
+
 namespace mirroring {
 
 RemotingSender::RemotingSender(
@@ -167,16 +170,15 @@
   auto remoting_frame = std::make_unique<media::cast::SenderEncodedFrame>();
   remoting_frame->frame_id = next_frame_id_;
   if (flow_restart_pending_) {
-    remoting_frame->dependency = media::cast::EncodedFrame::KEY;
+    remoting_frame->dependency = Dependency::kKeyFrame;
     flow_restart_pending_ = false;
   } else {
     DCHECK(!is_first_frame);
-    remoting_frame->dependency = media::cast::EncodedFrame::DEPENDENT;
+    remoting_frame->dependency = Dependency::kDependent;
   }
   remoting_frame->referenced_frame_id =
-      remoting_frame->dependency == media::cast::EncodedFrame::KEY
-          ? next_frame_id_
-          : next_frame_id_ - 1;
+      remoting_frame->dependency == Dependency::kKeyFrame ? next_frame_id_
+                                                          : next_frame_id_ - 1;
   remoting_frame->reference_time = clock_->NowTicks();
   remoting_frame->encode_completion_time = remoting_frame->reference_time;
 
diff --git a/components/mirroring/service/remoting_sender_unittest.cc b/components/mirroring/service/remoting_sender_unittest.cc
index b5a826b1..ec63c76c 100644
--- a/components/mirroring/service/remoting_sender_unittest.cc
+++ b/components/mirroring/service/remoting_sender_unittest.cc
@@ -20,6 +20,8 @@
 #include "mojo/public/cpp/system/data_pipe.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
+
 namespace mirroring {
 
 namespace {
@@ -412,9 +414,9 @@
     const media::cast::EncodedFrame& frame = frames[i];
     EXPECT_EQ(media::cast::FrameId::first() + i, frame.frame_id);
     if (i == 0 || i == 10)
-      EXPECT_EQ(media::cast::EncodedFrame::KEY, frame.dependency);
+      EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
     else
-      EXPECT_EQ(media::cast::EncodedFrame::DEPENDENT, frame.dependency);
+      EXPECT_EQ(Dependency::kDependent, frame.dependency);
   }
 }
 
@@ -587,10 +589,10 @@
     const media::cast::EncodedFrame& frame = frames[i];
     EXPECT_EQ(media::cast::FrameId::first() + i, frame.frame_id);
     if (i == 0) {
-      EXPECT_EQ(media::cast::EncodedFrame::KEY, frame.dependency);
+      EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
       EXPECT_EQ(media::cast::FrameId::first() + i, frame.referenced_frame_id);
     } else {
-      EXPECT_EQ(media::cast::EncodedFrame::DEPENDENT, frame.dependency);
+      EXPECT_EQ(Dependency::kDependent, frame.dependency);
       EXPECT_EQ(media::cast::FrameId::first() + i - 1,
                 frame.referenced_frame_id);
     }
diff --git a/components/optimization_guide/core/BUILD.gn b/components/optimization_guide/core/BUILD.gn
index cf40be9f..cd6f46f 100644
--- a/components/optimization_guide/core/BUILD.gn
+++ b/components/optimization_guide/core/BUILD.gn
@@ -9,6 +9,7 @@
 }
 import("//build/buildflag_header.gni")
 import("//components/optimization_guide/features.gni")
+import("//testing/libfuzzer/fuzzer_test.gni")
 import("//third_party/tflite/features.gni")
 
 static_library("bloomfilter") {
@@ -475,3 +476,32 @@
     ]
   }
 }
+
+if (build_with_tflite_lib) {
+  # TODO(b/249585782): Extend this to support NL models as well.
+  template("bert_model_fuzzer") {
+    forward_variables_from(invoker, "*")
+
+    fuzzer_test("optimization_guide_${target_name}_fuzzer") {
+      sources = [ "bert_model_fuzzer.cc" ]
+      defines = [
+        "OPTIMIZATION_TARGET=${optimization_target}",
+        "MODEL_FILE_BASENAME=\"${model_file_basename}\"",
+      ]
+      deps = [
+        ":core",
+        ":features",
+        ":machine_learning",
+        ":model_executor",
+        "//base:base",
+        "//base/test:test_support",
+        "//components/optimization_guide/proto:optimization_guide_proto",
+      ]
+    }
+  }
+
+  bert_model_fuzzer("page_topics") {
+    optimization_target = "OPTIMIZATION_TARGET_PAGE_TOPICS_V2"
+    model_file_basename = "bert_page_topics_model.tflite"
+  }
+}
diff --git a/components/optimization_guide/core/bert_model_fuzzer.cc b/components/optimization_guide/core/bert_model_fuzzer.cc
new file mode 100644
index 0000000..7aa32ef
--- /dev/null
+++ b/components/optimization_guide/core/bert_model_fuzzer.cc
@@ -0,0 +1,81 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string>
+
+#include <fuzzer/FuzzedDataProvider.h>
+
+#include "base/path_service.h"
+#include "base/test/task_environment.h"
+#include "components/optimization_guide/core/bert_model_executor.h"
+
+// This fuzzer relies on two macros so that the test code can be easily reused
+// across multiple model inputs. Make sure these are defined by the build rule.
+//
+// OPTIMIZATION_TARGET should be something like
+// OPTIMIZATION_TARGET_PAINFUL_PAGE_LOAD.
+//
+// MODEL_FILE_BASENAME should be something like "model.tflite", quotes included!
+// Given model file base names use the OptGuide test data dir in //components.
+class BertModelExecutorFuzzer {
+ public:
+  BertModelExecutorFuzzer()
+      : model_executor_(optimization_guide::BertModelExecutor(
+            optimization_guide::proto::OPTIMIZATION_TARGET)) {
+    model_executor_.InitializeAndMoveToExecutionThread(
+        // This is an arbitrarily long time since we don't need to test the
+        // timeout behavior here, libfuzzer will take care of hangs.
+        /*model_inference_timeout=*/base::Minutes(60),
+        optimization_guide::proto::OPTIMIZATION_TARGET,
+        /*execution_task_runner=*/task_environment_.GetMainThreadTaskRunner(),
+        /*reply_task_runner=*/task_environment_.GetMainThreadTaskRunner());
+
+    base::FilePath source_root_dir;
+    base::PathService::Get(base::DIR_SOURCE_ROOT, &source_root_dir);
+    base::FilePath model_file_path = source_root_dir.AppendASCII("components")
+                                         .AppendASCII("test")
+                                         .AppendASCII("data")
+                                         .AppendASCII("optimization_guide")
+                                         .AppendASCII(MODEL_FILE_BASENAME);
+
+    model_executor_.UpdateModelFile(model_file_path);
+    model_executor_.SetShouldUnloadModelOnComplete(false);
+  }
+  ~BertModelExecutorFuzzer() { task_environment_.RunUntilIdle(); }
+
+  optimization_guide::BertModelExecutor* executor() { return &model_executor_; }
+
+  void RunUntilIdle() { task_environment_.RunUntilIdle(); }
+
+ private:
+  base::test::TaskEnvironment task_environment_;
+  optimization_guide::BertModelExecutor model_executor_;
+};
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  static BertModelExecutorFuzzer test;
+  static bool had_successful_run = false;
+
+  std::string input(reinterpret_cast<const char*>(data), size);
+  test.executor()->SendForExecution(
+      base::BindOnce(
+          [](const absl::optional<std::vector<tflite::task::core::Category>>&
+                 output) {
+            if (output && !had_successful_run) {
+              had_successful_run = true;
+              // Print a single debug message so that its obvious things are
+              // working (or able to at least once) when running locally.
+              LOG(INFO) << "Congrats! Got a successful model execution. This "
+                           "message will not be printed again.";
+            }
+          }),
+      base::TimeTicks(), input);
+
+  // The model executor does some PostTask'ing to manage its state. While these
+  // tasks are not important for fuzzing, we don't want to queue up a ton of
+  // them.
+  test.RunUntilIdle();
+
+  return 0;
+}
\ No newline at end of file
diff --git a/components/password_manager/core/browser/password_store_proxy_backend.cc b/components/password_manager/core/browser/password_store_proxy_backend.cc
index b6d01d1..022280ab 100644
--- a/components/password_manager/core/browser/password_store_proxy_backend.cc
+++ b/components/password_manager/core/browser/password_store_proxy_backend.cc
@@ -11,12 +11,15 @@
 #include "base/barrier_closure.h"
 #include "base/callback.h"
 #include "base/callback_helpers.h"
+#include "base/functional/callback_forward.h"
 #include "base/functional/identity.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/ranges/algorithm.h"
 #include "base/strings/strcat.h"
 #include "components/password_manager/core/browser/field_info_table.h"
+#include "components/password_manager/core/browser/password_store_backend.h"
+#include "components/password_manager/core/browser/password_store_backend_error.h"
 #include "components/password_manager/core/browser/password_sync_util.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
@@ -94,6 +97,37 @@
   return false;
 }
 
+bool ShouldErrorResultInFallback(PasswordStoreBackendError error) {
+  switch (error.recovery_type) {
+    case PasswordStoreBackendErrorRecoveryType::kUnrecoverable:
+    case PasswordStoreBackendErrorRecoveryType::kUnspecified:
+    // TODO(http://crbug.com/1362464): Do not fallback on retriable errors
+    // once retrying is implemented.
+    case PasswordStoreBackendErrorRecoveryType::kRetriable:
+      return true;
+    case PasswordStoreBackendErrorRecoveryType::kRecoverable:
+      return false;
+  }
+}
+
+bool ShouldFallbackOnUserAffectingOperations() {
+  return password_manager::features::kFallbackOnUserAffectingReadOperations
+      .Get();
+}
+
+bool ShouldFallbackOnNonUserAffectingOperations() {
+  return password_manager::features::kFallbackOnNonUserAffectingReadOperations
+      .Get();
+}
+
+bool ShouldFallbackOnModifyingOperations() {
+  return password_manager::features::kFallbackOnModifyingOperations.Get();
+}
+
+bool ShouldFallbackOnRemoveOperations() {
+  return password_manager::features::kFallbackOnRemoveOperations.Get();
+}
+
 bool IsBuiltInBackendSyncEnabled() {
   DCHECK(
       base::FeatureList::IsEnabled(features::kUnifiedPasswordManagerAndroid));
@@ -401,11 +435,26 @@
   auto handler = base::MakeRefCounted<
       ShadowTrafficMetricsRecorder<LoginsResultOrErrorImpl>>(
       MethodName("GetAllLoginsAsync"));
+
+  LoginsOrErrorReply result_callback;
+  if (UsesAndroidBackendAsMainBackend() &&
+      ShouldFallbackOnNonUserAffectingOperations()) {
+    auto execute_on_built_in_backend =
+        base::BindOnce(&PasswordStoreBackend::GetAllLoginsAsync,
+                       base::Unretained(built_in_backend_));
+    result_callback = base::BindOnce(
+        &PasswordStoreProxyBackend::MaybeRetryOperation<LoginsResultOrError>,
+        weak_ptr_factory_.GetWeakPtr(), std::move(execute_on_built_in_backend),
+        std::move(callback));
+  } else {
+    result_callback = std::move(callback);
+  }
+
   main_backend()->GetAllLoginsAsync(
       base::BindOnce(&ShadowTrafficMetricsRecorder<
                          LoginsResultOrErrorImpl>::RecordMainResult,
                      handler)
-          .Then(std::move(callback)));
+          .Then(std::move(result_callback)));
 
   if (ShouldExecuteReadOperationsOnShadowBackend(
           prefs_, IsPasswordSyncEnabled(sync_service_))) {
@@ -421,11 +470,26 @@
   auto handler = base::MakeRefCounted<
       ShadowTrafficMetricsRecorder<LoginsResultOrErrorImpl>>(
       MethodName("GetAutofillableLoginsAsync"));
+
+  LoginsOrErrorReply result_callback;
+  if (UsesAndroidBackendAsMainBackend() &&
+      ShouldFallbackOnNonUserAffectingOperations()) {
+    auto execute_on_built_in_backend =
+        base::BindOnce(&PasswordStoreBackend::GetAutofillableLoginsAsync,
+                       base::Unretained(built_in_backend_));
+    result_callback = base::BindOnce(
+        &PasswordStoreProxyBackend::MaybeRetryOperation<LoginsResultOrError>,
+        weak_ptr_factory_.GetWeakPtr(), std::move(execute_on_built_in_backend),
+        std::move(callback));
+  } else {
+    result_callback = std::move(callback);
+  }
+
   main_backend()->GetAutofillableLoginsAsync(
       base::BindOnce(&ShadowTrafficMetricsRecorder<
                          LoginsResultOrErrorImpl>::RecordMainResult,
                      handler)
-          .Then(std::move(callback)));
+          .Then(std::move(result_callback)));
 
   if (ShouldExecuteReadOperationsOnShadowBackend(
           prefs_, IsPasswordSyncEnabled(sync_service_))) {
@@ -449,11 +513,34 @@
   auto handler = base::MakeRefCounted<
       ShadowTrafficMetricsRecorder<LoginsResultOrErrorImpl>>(
       MethodName("FillMatchingLoginsAsync"));
+
+  LoginsOrErrorReply result_callback;
+  if (UsesAndroidBackendAsMainBackend() &&
+      ShouldFallbackOnUserAffectingOperations()) {
+    // Lambda is used to reorder |FillMatchingLoginsAsync| arguments so all but
+    // the |reply_callback| could be binded.
+    auto execute_on_built_in_backend = base::BindOnce(
+        [](PasswordStoreBackend* backend, bool include_psl,
+           const std::vector<PasswordFormDigest>& forms,
+           LoginsOrErrorReply reply_callback) {
+          backend->FillMatchingLoginsAsync(std::move(reply_callback),
+                                           include_psl, forms);
+        },
+        base::Unretained(built_in_backend_), include_psl, forms);
+
+    result_callback = base::BindOnce(
+        &PasswordStoreProxyBackend::MaybeRetryOperation<LoginsResultOrError>,
+        weak_ptr_factory_.GetWeakPtr(), std::move(execute_on_built_in_backend),
+        std::move(callback));
+  } else {
+    result_callback = std::move(callback);
+  }
+
   main_backend()->FillMatchingLoginsAsync(
       base::BindOnce(&ShadowTrafficMetricsRecorder<
                          LoginsResultOrErrorImpl>::RecordMainResult,
                      handler)
-          .Then(std::move(callback)),
+          .Then(std::move(result_callback)),
       include_psl, forms);
 
   if (ShouldExecuteReadOperationsOnShadowBackend(
@@ -473,16 +560,25 @@
       ShadowTrafficMetricsRecorder<PasswordChangesOrErrorImpl>>(
       MethodName("AddLoginAsync"));
 
-  auto maybe_retry_callback =
-      base::BindOnce(&PasswordStoreProxyBackend::MaybeRetryToAddLoginOnFail,
-                     weak_ptr_factory_.GetWeakPtr(), form, std::move(callback),
-                     UsesAndroidBackendAsMainBackend());
+  PasswordChangesOrErrorReply result_callback;
+  if (UsesAndroidBackendAsMainBackend() &&
+      ShouldFallbackOnModifyingOperations()) {
+    auto execute_on_built_in_backend =
+        base::BindOnce(&PasswordStoreBackend::AddLoginAsync,
+                       base::Unretained(built_in_backend_), form);
+    result_callback = base::BindOnce(
+        &PasswordStoreProxyBackend::MaybeRetryOperation<PasswordChangesOrError>,
+        weak_ptr_factory_.GetWeakPtr(), std::move(execute_on_built_in_backend),
+        std::move(callback));
+  } else {
+    result_callback = std::move(callback);
+  }
 
   main_backend()->AddLoginAsync(
       form, base::BindOnce(&ShadowTrafficMetricsRecorder<
                                PasswordChangesOrErrorImpl>::RecordMainResult,
                            handler)
-                .Then(std::move(maybe_retry_callback)));
+                .Then(std::move(result_callback)));
   if (ShouldExecuteModifyOperationsOnShadowBackend(
           prefs_, IsPasswordSyncEnabled(sync_service_))) {
     shadow_backend()->AddLoginAsync(
@@ -500,16 +596,25 @@
       ShadowTrafficMetricsRecorder<PasswordChangesOrErrorImpl>>(
       MethodName("UpdateLoginAsync"));
 
-  auto maybe_retry_callback =
-      base::BindOnce(&PasswordStoreProxyBackend::MaybeRetryToUpdateLoginOnFail,
-                     weak_ptr_factory_.GetWeakPtr(), form, std::move(callback),
-                     UsesAndroidBackendAsMainBackend());
+  PasswordChangesOrErrorReply result_callback;
+  if (UsesAndroidBackendAsMainBackend() &&
+      ShouldFallbackOnModifyingOperations()) {
+    auto execute_on_built_in_backend =
+        base::BindOnce(&PasswordStoreBackend::UpdateLoginAsync,
+                       base::Unretained(built_in_backend_), form);
+    result_callback = base::BindOnce(
+        &PasswordStoreProxyBackend::MaybeRetryOperation<PasswordChangesOrError>,
+        weak_ptr_factory_.GetWeakPtr(), std::move(execute_on_built_in_backend),
+        std::move(callback));
+  } else {
+    result_callback = std::move(callback);
+  }
 
   main_backend()->UpdateLoginAsync(
       form, base::BindOnce(&ShadowTrafficMetricsRecorder<
                                PasswordChangesOrErrorImpl>::RecordMainResult,
                            handler)
-                .Then(std::move(maybe_retry_callback)));
+                .Then(std::move(result_callback)));
   if (ShouldExecuteModifyOperationsOnShadowBackend(
           prefs_, IsPasswordSyncEnabled(sync_service_))) {
     shadow_backend()->UpdateLoginAsync(
@@ -527,11 +632,24 @@
       ShadowTrafficMetricsRecorder<PasswordChangesOrErrorImpl>>(
       MethodName("RemoveLoginAsync"));
 
+  PasswordChangesOrErrorReply result_callback;
+  if (UsesAndroidBackendAsMainBackend() && ShouldFallbackOnRemoveOperations()) {
+    auto execute_on_built_in_backend =
+        base::BindOnce(&PasswordStoreBackend::RemoveLoginAsync,
+                       base::Unretained(built_in_backend_), form);
+    result_callback = base::BindOnce(
+        &PasswordStoreProxyBackend::MaybeRetryOperation<PasswordChangesOrError>,
+        weak_ptr_factory_.GetWeakPtr(), std::move(execute_on_built_in_backend),
+        std::move(callback));
+  } else {
+    result_callback = std::move(callback);
+  }
+
   main_backend()->RemoveLoginAsync(
       form, base::BindOnce(&ShadowTrafficMetricsRecorder<
                                PasswordChangesOrErrorImpl>::RecordMainResult,
                            handler)
-                .Then(std::move(callback)));
+                .Then(std::move(result_callback)));
   if (ShouldExecuteDeletionsOnShadowBackend(
           prefs_, IsPasswordSyncEnabled(sync_service_))) {
     shadow_backend()->RemoveLoginAsync(
@@ -552,12 +670,31 @@
       ShadowTrafficMetricsRecorder<PasswordChangesOrErrorImpl>>(
       MethodName("RemoveLoginsByURLAndTimeAsync"));
 
+  // Sync completion callback is only used by the LocalDatabase backend and is
+  // ignored by the Android backend.
+  base::OnceCallback<void(bool)> sync_completion_callback;
+  PasswordChangesOrErrorReply result_callback;
+  if (UsesAndroidBackendAsMainBackend() && ShouldFallbackOnRemoveOperations()) {
+    sync_completion_callback = base::DoNothing();
+    auto execute_on_built_in_backend =
+        base::BindOnce(&PasswordStoreBackend::RemoveLoginsByURLAndTimeAsync,
+                       base::Unretained(built_in_backend_), url_filter,
+                       delete_begin, delete_end, std::move(sync_completion));
+    result_callback = base::BindOnce(
+        &PasswordStoreProxyBackend::MaybeRetryOperation<PasswordChangesOrError>,
+        weak_ptr_factory_.GetWeakPtr(), std::move(execute_on_built_in_backend),
+        std::move(callback));
+  } else {
+    sync_completion_callback = std::move(sync_completion);
+    result_callback = std::move(callback);
+  }
+
   main_backend()->RemoveLoginsByURLAndTimeAsync(
-      url_filter, delete_begin, delete_end, std::move(sync_completion),
+      url_filter, delete_begin, delete_end, std::move(sync_completion_callback),
       base::BindOnce(&ShadowTrafficMetricsRecorder<
                          PasswordChangesOrErrorImpl>::RecordMainResult,
                      handler)
-          .Then(std::move(callback)));
+          .Then(std::move(result_callback)));
   if (ShouldExecuteDeletionsOnShadowBackend(
           prefs_, IsPasswordSyncEnabled(sync_service_))) {
     shadow_backend()->RemoveLoginsByURLAndTimeAsync(
@@ -577,12 +714,25 @@
       ShadowTrafficMetricsRecorder<PasswordChangesOrErrorImpl>>(
       MethodName("RemoveLoginsCreatedBetweenAsync"));
 
+  PasswordChangesOrErrorReply result_callback;
+  if (UsesAndroidBackendAsMainBackend() && ShouldFallbackOnRemoveOperations()) {
+    auto execute_on_built_in_backend = base::BindOnce(
+        &PasswordStoreBackend::RemoveLoginsCreatedBetweenAsync,
+        base::Unretained(built_in_backend_), delete_begin, delete_end);
+    result_callback = base::BindOnce(
+        &PasswordStoreProxyBackend::MaybeRetryOperation<PasswordChangesOrError>,
+        weak_ptr_factory_.GetWeakPtr(), std::move(execute_on_built_in_backend),
+        std::move(callback));
+  } else {
+    result_callback = std::move(callback);
+  }
+
   main_backend()->RemoveLoginsCreatedBetweenAsync(
       delete_begin, delete_end,
       base::BindOnce(&ShadowTrafficMetricsRecorder<
                          PasswordChangesOrErrorImpl>::RecordMainResult,
                      handler)
-          .Then(std::move(callback)));
+          .Then(std::move(result_callback)));
   if (ShouldExecuteDeletionsOnShadowBackend(
           prefs_, IsPasswordSyncEnabled(sync_service_))) {
     shadow_backend()->RemoveLoginsCreatedBetweenAsync(
@@ -596,6 +746,9 @@
 void PasswordStoreProxyBackend::DisableAutoSignInForOriginsAsync(
     const base::RepeatingCallback<bool(const GURL&)>& origin_filter,
     base::OnceClosure completion) {
+  // TODO(https://crbug.com/1278807): Implement error handling, when actual
+  // store changes will be received from the store.
+
   main_backend()->DisableAutoSignInForOriginsAsync(origin_filter,
                                                    std::move(completion));
   if (ShouldExecuteModifyOperationsOnShadowBackend(
@@ -644,33 +797,18 @@
   android_backend_->OnSyncServiceInitialized(sync_service);
 }
 
-void PasswordStoreProxyBackend::MaybeRetryToAddLoginOnFail(
-    const PasswordForm& form,
-    PasswordChangesOrErrorReply callback,
-    bool was_using_android_backend,
-    PasswordChangesOrError result) {
-  if (was_using_android_backend &&
-      absl::holds_alternative<PasswordStoreBackendError>(result) &&
-      absl::get<PasswordStoreBackendError>(result).recovery_type ==
-          PasswordStoreBackendErrorRecoveryType::kUnrecoverable) {
-    built_in_backend_->AddLoginAsync(form, std::move(callback));
+template <typename ResultT>
+void PasswordStoreProxyBackend::MaybeRetryOperation(
+    base::OnceCallback<void(base::OnceCallback<void(ResultT)> callback)>
+        retry_callback,
+    base::OnceCallback<void(ResultT)> result_callback,
+    ResultT result) {
+  if (absl::holds_alternative<PasswordStoreBackendError>(result) &&
+      ShouldErrorResultInFallback(
+          absl::get<PasswordStoreBackendError>(result))) {
+    std::move(retry_callback).Run(std::move(result_callback));
   } else {
-    std::move(callback).Run(result);
-  }
-}
-
-void PasswordStoreProxyBackend::MaybeRetryToUpdateLoginOnFail(
-    const PasswordForm& form,
-    PasswordChangesOrErrorReply callback,
-    bool was_using_android_backend,
-    const PasswordChangesOrError& result) {
-  if (was_using_android_backend &&
-      absl::holds_alternative<PasswordStoreBackendError>(result) &&
-      absl::get<PasswordStoreBackendError>(result).recovery_type ==
-          PasswordStoreBackendErrorRecoveryType::kUnrecoverable) {
-    built_in_backend_->UpdateLoginAsync(form, std::move(callback));
-  } else {
-    std::move(callback).Run(result);
+    std::move(result_callback).Run(std::move(result));
   }
 }
 
diff --git a/components/password_manager/core/browser/password_store_proxy_backend.h b/components/password_manager/core/browser/password_store_proxy_backend.h
index 64c62f8e..382bab9e 100644
--- a/components/password_manager/core/browser/password_store_proxy_backend.h
+++ b/components/password_manager/core/browser/password_store_proxy_backend.h
@@ -97,19 +97,19 @@
   // data.
   bool UsesAndroidBackendAsMainBackend();
 
-  // Retries to add/update login into |built_in_backend| in case of an
-  // unrecoverable error inside |android_backend|. |form| and
-  // |original_callback| are the original parameters passed to
-  // Add/UpdateLoginAsync.
-  void MaybeRetryToAddLoginOnFail(const PasswordForm& form,
-                                  PasswordChangesOrErrorReply original_callback,
-                                  bool was_using_android_backend,
-                                  PasswordChangesOrError result);
-  void MaybeRetryToUpdateLoginOnFail(
-      const PasswordForm& form,
-      PasswordChangesOrErrorReply original_callback,
-      bool was_using_android_backend,
-      const PasswordChangesOrError& result);
+  // Retries to execute operation on |built_in_backend| in case of an
+  // unrecoverable error inside |android_backend|. |retry_callback| is the
+  // pending operation with binded parameters, |result_callback| is the original
+  // operation callback.
+  // |ResultT| is the resulting type of the backend operation that will be
+  // passed to the result callback. Could be either |LoginsResultOrError| or
+  // |PasswordChangesOrError|.
+  template <typename ResultT>
+  void MaybeRetryOperation(
+      base::OnceCallback<void(base::OnceCallback<void(ResultT)> callback)>
+          retry_callback,
+      base::OnceCallback<void(ResultT)> result_callback,
+      ResultT result);
 
   PasswordStoreBackend* main_backend();
   PasswordStoreBackend* shadow_backend();
diff --git a/components/password_manager/core/browser/password_store_proxy_backend_unittest.cc b/components/password_manager/core/browser/password_store_proxy_backend_unittest.cc
index 352e33d..4bf6ce61 100644
--- a/components/password_manager/core/browser/password_store_proxy_backend_unittest.cc
+++ b/components/password_manager/core/browser/password_store_proxy_backend_unittest.cc
@@ -16,6 +16,8 @@
 #include "components/password_manager/core/browser/mock_password_store_backend.h"
 #include "components/password_manager/core/browser/password_form_digest.h"
 #include "components/password_manager/core/browser/password_manager_test_utils.h"
+#include "components/password_manager/core/browser/password_store_backend.h"
+#include "components/password_manager/core/browser/password_store_backend_error.h"
 #include "components/password_manager/core/browser/password_store_change.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
@@ -843,6 +845,324 @@
   proxy_backend().UpdateLoginAsync(CreateTestForm(), mock_reply.Get());
 }
 
+struct FallbackParam {
+  PasswordStoreBackendError error;
+  bool should_fallback;
+};
+
+class PasswordStoreProxyBackendTestWithFallbackParam
+    : public PasswordStoreProxyBackendTest,
+      public testing::WithParamInterface<FallbackParam> {
+ protected:
+  constexpr bool ShouldFallbackOnParam(const FallbackParam& p) {
+    return p.should_fallback && p.error == kUnrecoverableError;
+  }
+
+  void InitFeatureListWithFallbackEnableFeatureParam(
+      base::test::ScopedFeatureList& feature_list,
+      base::FeatureParam<bool> fallback_param) {
+    feature_list.InitAndEnableFeatureWithParameters(
+        password_manager::features::kUnifiedPasswordManagerAndroid,
+        {{"stage", "3"},
+         {fallback_param.name, GetParam().should_fallback ? "true" : "false"}});
+  }
+};
+
+TEST_P(PasswordStoreProxyBackendTestWithFallbackParam,
+       RetriesAddLoginOnBuiltInBackend) {
+  const FallbackParam& p = GetParam();
+
+  base::test::ScopedFeatureList feature_list;
+  InitFeatureListWithFallbackEnableFeatureParam(
+      feature_list, password_manager::features::kFallbackOnModifyingOperations);
+  EnablePasswordSync();
+
+  base::MockCallback<PasswordChangesOrErrorReply> mock_reply;
+
+  EXPECT_CALL(android_backend(), AddLoginAsync)
+      .WillOnce(WithArg<1>(
+          Invoke([&p](auto reply) -> void { std::move(reply).Run(p.error); })));
+  const PasswordStoreChangeList changes = {
+      PasswordStoreChange(PasswordStoreChange::Type::ADD, CreateTestForm())};
+  if (ShouldFallbackOnParam(p)) {
+    EXPECT_CALL(built_in_backend(), AddLoginAsync)
+        .WillOnce(WithArg<1>(Invoke([&changes](auto reply) -> void {
+          std::move(reply).Run(changes);
+        })));
+    // Check that caller doesn't receive an error from android backend.
+    EXPECT_CALL(mock_reply, Run(PasswordChangesAre(changes)));
+  } else {
+    EXPECT_CALL(built_in_backend(), AddLoginAsync).Times(0);
+    // Check that caller gets an error from android backend.
+    EXPECT_CALL(mock_reply, Run(PasswordChangesOrError(p.error)));
+  }
+  proxy_backend().AddLoginAsync(CreateTestForm(), mock_reply.Get());
+}
+
+TEST_P(PasswordStoreProxyBackendTestWithFallbackParam,
+       RetriesUpdateLoginOnBuiltInBackend) {
+  const FallbackParam& p = GetParam();
+
+  base::test::ScopedFeatureList feature_list;
+  InitFeatureListWithFallbackEnableFeatureParam(
+      feature_list, password_manager::features::kFallbackOnModifyingOperations);
+  EnablePasswordSync();
+
+  base::MockCallback<PasswordChangesOrErrorReply> mock_reply;
+
+  EXPECT_CALL(android_backend(), UpdateLoginAsync)
+      .WillOnce(WithArg<1>(
+          Invoke([&p](auto reply) -> void { std::move(reply).Run(p.error); })));
+  const PasswordStoreChangeList changes = {
+      PasswordStoreChange(PasswordStoreChange::Type::ADD, CreateTestForm())};
+  if (ShouldFallbackOnParam(p)) {
+    EXPECT_CALL(built_in_backend(), UpdateLoginAsync)
+        .WillOnce(WithArg<1>(Invoke([&changes](auto reply) -> void {
+          std::move(reply).Run(changes);
+        })));
+    // Check that caller doesn't receive an error from android backend.
+    EXPECT_CALL(mock_reply, Run(PasswordChangesAre(changes)));
+  } else {
+    EXPECT_CALL(built_in_backend(), UpdateLoginAsync).Times(0);
+    // Check that caller gets an error from android backend.
+    EXPECT_CALL(mock_reply, Run(PasswordChangesOrError(p.error)));
+  }
+  proxy_backend().UpdateLoginAsync(CreateTestForm(), mock_reply.Get());
+}
+
+TEST_P(PasswordStoreProxyBackendTestWithFallbackParam,
+       RetriesGetAllLoginsOnBuiltInBackend) {
+  const FallbackParam& p = GetParam();
+
+  base::test::ScopedFeatureList feature_list;
+  InitFeatureListWithFallbackEnableFeatureParam(
+      feature_list,
+      password_manager::features::kFallbackOnNonUserAffectingReadOperations);
+  EnablePasswordSync();
+
+  base::MockCallback<LoginsOrErrorReply> mock_reply;
+  std::vector<std::unique_ptr<PasswordForm>> expected_logins =
+      CreateTestLogins();
+
+  EXPECT_CALL(android_backend(), GetAllLoginsAsync)
+      .WillOnce(WithArg<0>(Invoke([&p](LoginsOrErrorReply reply) -> void {
+        std::move(reply).Run(p.error);
+      })));
+  if (ShouldFallbackOnParam(p)) {
+    EXPECT_CALL(built_in_backend(), GetAllLoginsAsync)
+        .WillOnce(WithArg<0>(Invoke([](LoginsOrErrorReply reply) -> void {
+          std::move(reply).Run(CreateTestLogins());
+        })));
+    // Check that caller doesn't receive an error from android backend.
+    EXPECT_CALL(mock_reply, Run(LoginsResultsOrErrorAre(&expected_logins)));
+  } else {
+    EXPECT_CALL(built_in_backend(), GetAllLoginsAsync).Times(0);
+    // Check that caller gets an error from android backend.
+    EXPECT_CALL(mock_reply,
+                Run(VariantWith<PasswordStoreBackendError>(p.error)));
+  }
+  proxy_backend().GetAllLoginsAsync(mock_reply.Get());
+}
+
+TEST_P(PasswordStoreProxyBackendTestWithFallbackParam,
+       RetriesGetAutofillableLoginsOnBuiltInBackend) {
+  const FallbackParam& p = GetParam();
+
+  base::test::ScopedFeatureList feature_list;
+  InitFeatureListWithFallbackEnableFeatureParam(
+      feature_list,
+      password_manager::features::kFallbackOnNonUserAffectingReadOperations);
+  EnablePasswordSync();
+
+  base::MockCallback<LoginsOrErrorReply> mock_reply;
+  std::vector<std::unique_ptr<PasswordForm>> expected_logins =
+      CreateTestLogins();
+
+  EXPECT_CALL(android_backend(), GetAutofillableLoginsAsync)
+      .WillOnce(WithArg<0>(Invoke([&p](LoginsOrErrorReply reply) -> void {
+        std::move(reply).Run(p.error);
+      })));
+  if (ShouldFallbackOnParam(p)) {
+    EXPECT_CALL(built_in_backend(), GetAutofillableLoginsAsync)
+        .WillOnce(WithArg<0>(Invoke([](LoginsOrErrorReply reply) -> void {
+          std::move(reply).Run(CreateTestLogins());
+        })));
+    // Check that caller doesn't receive an error from android backend.
+    EXPECT_CALL(mock_reply, Run(LoginsResultsOrErrorAre(&expected_logins)));
+  } else {
+    EXPECT_CALL(built_in_backend(), GetAutofillableLoginsAsync).Times(0);
+    // Check that caller gets an error from android backend.
+    EXPECT_CALL(mock_reply,
+                Run(VariantWith<PasswordStoreBackendError>(p.error)));
+  }
+  proxy_backend().GetAutofillableLoginsAsync(mock_reply.Get());
+}
+
+TEST_P(PasswordStoreProxyBackendTestWithFallbackParam,
+       RetriesFillMatchingLoginsOnBuiltInBackend) {
+  const FallbackParam& p = GetParam();
+
+  base::test::ScopedFeatureList feature_list;
+  InitFeatureListWithFallbackEnableFeatureParam(
+      feature_list,
+      password_manager::features::kFallbackOnUserAffectingReadOperations);
+  EnablePasswordSync();
+
+  base::MockCallback<LoginsOrErrorReply> mock_reply;
+  std::vector<std::unique_ptr<PasswordForm>> expected_logins =
+      CreateTestLogins();
+
+  EXPECT_CALL(android_backend(), FillMatchingLoginsAsync)
+      .WillOnce(WithArg<0>(Invoke([&p](LoginsOrErrorReply reply) -> void {
+        std::move(reply).Run(p.error);
+      })));
+  if (ShouldFallbackOnParam(p)) {
+    EXPECT_CALL(built_in_backend(), FillMatchingLoginsAsync)
+        .WillOnce(WithArg<0>(Invoke([](LoginsOrErrorReply reply) -> void {
+          std::move(reply).Run(CreateTestLogins());
+        })));
+    // Check that caller doesn't receive an error from android backend.
+    EXPECT_CALL(mock_reply, Run(LoginsResultsOrErrorAre(&expected_logins)));
+  } else {
+    EXPECT_CALL(built_in_backend(), FillMatchingLoginsAsync).Times(0);
+    // Check that caller gets an error from android backend.
+    EXPECT_CALL(mock_reply,
+                Run(VariantWith<PasswordStoreBackendError>(p.error)));
+  }
+  proxy_backend().FillMatchingLoginsAsync(mock_reply.Get(),
+                                          /*include_psl=*/false,
+                                          std::vector<PasswordFormDigest>());
+}
+
+TEST_P(PasswordStoreProxyBackendTestWithFallbackParam,
+       RetriesRemoveLoginOnBuiltInBackend) {
+  const FallbackParam& p = GetParam();
+
+  base::test::ScopedFeatureList feature_list;
+  InitFeatureListWithFallbackEnableFeatureParam(
+      feature_list, password_manager::features::kFallbackOnRemoveOperations);
+
+  EnablePasswordSync();
+
+  base::MockCallback<PasswordChangesOrErrorReply> mock_reply;
+  PasswordForm form = CreateTestForm();
+  PasswordStoreChangeList change_list;
+  change_list.emplace_back(Type::REMOVE, form);
+
+  EXPECT_CALL(android_backend(), RemoveLoginAsync)
+      .WillOnce(
+          WithArg<1>(Invoke([&p](PasswordChangesOrErrorReply reply) -> void {
+            std::move(reply).Run(p.error);
+          })));
+
+  if (ShouldFallbackOnParam(p)) {
+    EXPECT_CALL(built_in_backend(), RemoveLoginAsync)
+        .WillOnce(WithArg<1>(Invoke([&change_list](auto reply) -> void {
+          std::move(reply).Run(change_list);
+        })));
+    // Check that caller doesn't receive an error from android backend.
+    EXPECT_CALL(mock_reply,
+                Run(VariantWith<PasswordChanges>(Optional(change_list))));
+  } else {
+    EXPECT_CALL(built_in_backend(), RemoveLoginAsync).Times(0);
+    // Check that caller gets an error from android backend.
+    EXPECT_CALL(mock_reply, Run(PasswordChangesOrError(p.error)));
+  }
+  proxy_backend().RemoveLoginAsync(form, mock_reply.Get());
+}
+
+TEST_P(PasswordStoreProxyBackendTestWithFallbackParam,
+       RetriesRemoveLoginByURLAndTimeOnBuiltInBackend) {
+  const FallbackParam& p = GetParam();
+
+  base::test::ScopedFeatureList feature_list;
+  InitFeatureListWithFallbackEnableFeatureParam(
+      feature_list, password_manager::features::kFallbackOnRemoveOperations);
+
+  EnablePasswordSync();
+
+  base::MockCallback<PasswordChangesOrErrorReply> mock_reply;
+  PasswordForm form = CreateTestForm();
+  PasswordStoreChangeList change_list;
+  change_list.emplace_back(Type::REMOVE, form);
+
+  base::Time kStart = base::Time::FromTimeT(111111);
+  base::Time kEnd = base::Time::FromTimeT(22222222);
+
+  EXPECT_CALL(android_backend(), RemoveLoginsByURLAndTimeAsync)
+      .WillOnce(
+          WithArg<4>(Invoke([&p](PasswordChangesOrErrorReply reply) -> void {
+            std::move(reply).Run(p.error);
+          })));
+
+  if (ShouldFallbackOnParam(p)) {
+    EXPECT_CALL(built_in_backend(), RemoveLoginsByURLAndTimeAsync)
+        .WillOnce(WithArg<4>(Invoke([&change_list](auto reply) -> void {
+          std::move(reply).Run(change_list);
+        })));
+    // Check that caller doesn't receive an error from android backend.
+    EXPECT_CALL(mock_reply,
+                Run(VariantWith<PasswordChanges>(Optional(change_list))));
+  } else {
+    EXPECT_CALL(built_in_backend(), RemoveLoginsByURLAndTimeAsync).Times(0);
+    // Check that caller gets an error from android backend.
+    EXPECT_CALL(mock_reply, Run(PasswordChangesOrError(p.error)));
+  }
+  proxy_backend().RemoveLoginsByURLAndTimeAsync(
+      base::BindRepeating(&FilterNoUrl), kStart, kEnd, base::DoNothing(),
+      mock_reply.Get());
+}
+
+TEST_P(PasswordStoreProxyBackendTestWithFallbackParam,
+       RetriesRemoveLoginCreatedBetweenOnBuiltInBackend) {
+  const FallbackParam& p = GetParam();
+
+  base::test::ScopedFeatureList feature_list;
+  InitFeatureListWithFallbackEnableFeatureParam(
+      feature_list, password_manager::features::kFallbackOnRemoveOperations);
+
+  EnablePasswordSync();
+
+  base::MockCallback<PasswordChangesOrErrorReply> mock_reply;
+  PasswordForm form = CreateTestForm();
+  PasswordStoreChangeList change_list;
+  change_list.emplace_back(Type::REMOVE, form);
+
+  base::Time kStart = base::Time::FromTimeT(111111);
+  base::Time kEnd = base::Time::FromTimeT(22222222);
+
+  EXPECT_CALL(android_backend(), RemoveLoginsCreatedBetweenAsync)
+      .WillOnce(
+          WithArg<2>(Invoke([&p](PasswordChangesOrErrorReply reply) -> void {
+            std::move(reply).Run(p.error);
+          })));
+
+  if (ShouldFallbackOnParam(p)) {
+    EXPECT_CALL(built_in_backend(), RemoveLoginsCreatedBetweenAsync)
+        .WillOnce(WithArg<2>(Invoke([&change_list](auto reply) -> void {
+          std::move(reply).Run(change_list);
+        })));
+    // Check that caller doesn't receive an error from android backend.
+    EXPECT_CALL(mock_reply,
+                Run(VariantWith<PasswordChanges>(Optional(change_list))));
+  } else {
+    EXPECT_CALL(built_in_backend(), RemoveLoginsCreatedBetweenAsync).Times(0);
+    // Check that caller gets an error from android backend.
+    EXPECT_CALL(mock_reply, Run(PasswordChangesOrError(p.error)));
+  }
+  proxy_backend().RemoveLoginsCreatedBetweenAsync(kStart, kEnd,
+                                                  mock_reply.Get());
+}
+
+INSTANTIATE_TEST_SUITE_P(
+    PasswordStoreProxyBackendTest,
+    PasswordStoreProxyBackendTestWithFallbackParam,
+    testing::Values(
+        FallbackParam{.error = kUnrecoverableError, .should_fallback = true},
+        FallbackParam{.error = kRecoverableError, .should_fallback = true},
+        FallbackParam{.error = kRecoverableError, .should_fallback = false},
+        FallbackParam{.error = kUnrecoverableError, .should_fallback = false}));
+
 // Holds the main and shadow backend's logins and the expected number of common
 // and different logins.
 struct LoginsMetricsParam {
diff --git a/components/password_manager/core/browser/ui/insecure_credentials_manager.cc b/components/password_manager/core/browser/ui/insecure_credentials_manager.cc
index be438da..4ae69ac5 100644
--- a/components/password_manager/core/browser/ui/insecure_credentials_manager.cc
+++ b/components/password_manager/core/browser/ui/insecure_credentials_manager.cc
@@ -141,25 +141,28 @@
             InsecurityMetadata();
       }
     }
-  } else {
-    // Otherwise erase entries which aren't leaked and phished.
-    base::EraseIf(credentials, [](const auto& credential) {
-      return !credential.IsLeaked() && !credential.IsPhished();
-    });
+    return credentials;
   }
-
-  return credentials;
-}
-
-std::vector<CredentialUIEntry>
-InsecureCredentialsManager::GetWeakCredentialEntries() const {
-  DCHECK(presenter_);
-  std::vector<CredentialUIEntry> credentials =
-      presenter_->GetSavedCredentials();
-  base::EraseIf(credentials, [this](const auto& credential) {
-    return !weak_passwords_.contains(credential.password);
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Otherwise erase entries which aren't leaked and phished.
+  base::EraseIf(credentials, [](const auto& credential) {
+    return !credential.IsLeaked() && !credential.IsPhished();
   });
   return credentials;
+#else
+  for (auto& credential : credentials) {
+    if (weak_passwords_.contains(credential.password)) {
+      credential.password_issues.insert(
+          {password_manager::InsecureType::kWeak,
+           password_manager::InsecurityMetadata(
+               base::Time(), password_manager::IsMuted(false))});
+    }
+  }
+  base::EraseIf(credentials, [](const auto& credential) {
+    return credential.password_issues.empty();
+  });
+  return credentials;
+#endif
 }
 
 void InsecureCredentialsManager::AddObserver(Observer* observer) {
@@ -176,12 +179,12 @@
   base::UmaHistogramTimes("PasswordManager.WeakCheck.Time",
                           timer_since_weak_check_start.Elapsed());
   weak_passwords_ = std::move(weak_passwords);
-  NotifyWeakCredentialsChanged();
+  NotifyInsecureCredentialsChanged();
 }
 
 void InsecureCredentialsManager::OnEdited(const PasswordForm& form) {
-  // The WeakCheck is a Desktop only feature for now. Disable on Mobile to avoid
-  // pulling in a big dependency on zxcvbn.
+  // The WeakCheck is a Desktop only feature for now. Disable on Mobile to
+  // avoid pulling in a big dependency on zxcvbn.
 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
   const std::u16string& password = form.password_value;
   if (weak_passwords_.contains(password) || !IsWeak(password)) {
@@ -191,7 +194,7 @@
   }
 
   weak_passwords_.insert(password);
-  NotifyWeakCredentialsChanged();
+  NotifyInsecureCredentialsChanged();
 #endif
 }
 
@@ -200,7 +203,6 @@
 void InsecureCredentialsManager::OnSavedPasswordsChanged(
     SavedPasswordsPresenter::SavedPasswordsView saved_passwords) {
   NotifyInsecureCredentialsChanged();
-  NotifyWeakCredentialsChanged();
 }
 
 void InsecureCredentialsManager::NotifyInsecureCredentialsChanged() {
@@ -209,12 +211,6 @@
   }
 }
 
-void InsecureCredentialsManager::NotifyWeakCredentialsChanged() {
-  for (auto& observer : observers_) {
-    observer.OnWeakCredentialsChanged();
-  }
-}
-
 PasswordStoreInterface& InsecureCredentialsManager::GetStoreFor(
     const PasswordForm& form) {
   return form.IsUsingAccountStore() ? *account_store_ : *profile_store_;
diff --git a/components/password_manager/core/browser/ui/insecure_credentials_manager.h b/components/password_manager/core/browser/ui/insecure_credentials_manager.h
index df4b4f3..9c731a5 100644
--- a/components/password_manager/core/browser/ui/insecure_credentials_manager.h
+++ b/components/password_manager/core/browser/ui/insecure_credentials_manager.h
@@ -47,7 +47,6 @@
   class Observer : public base::CheckedObserver {
    public:
     virtual void OnInsecureCredentialsChanged() = 0;
-    virtual void OnWeakCredentialsChanged() {}
   };
 
   InsecureCredentialsManager(
@@ -77,9 +76,6 @@
   // Returns a vector of currently insecure credentials.
   std::vector<CredentialUIEntry> GetInsecureCredentialEntries() const;
 
-  // Returns a vector of currently weak credentials.
-  std::vector<CredentialUIEntry> GetWeakCredentialEntries() const;
-
   // Allows clients and register and de-register themselves.
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
@@ -98,9 +94,6 @@
   // Notifies observers when insecure credentials have changed.
   void NotifyInsecureCredentialsChanged();
 
-  // Notifies observers when weak credentials have changed.
-  void NotifyWeakCredentialsChanged();
-
   // Returns the `profile_store_` or `account_store_` if `form` is stored in the
   // profile store of the account store accordingly.
   PasswordStoreInterface& GetStoreFor(const PasswordForm& form);
diff --git a/components/password_manager/core/browser/ui/insecure_credentials_manager_unittest.cc b/components/password_manager/core/browser/ui/insecure_credentials_manager_unittest.cc
index 3fe3dd1..d3d6d01 100644
--- a/components/password_manager/core/browser/ui/insecure_credentials_manager_unittest.cc
+++ b/components/password_manager/core/browser/ui/insecure_credentials_manager_unittest.cc
@@ -32,16 +32,14 @@
 constexpr char16_t kUsername1[] = u"alice";
 constexpr char16_t kUsername2[] = u"bob";
 
-constexpr char16_t kPassword1[] = u"f00b4r";
-constexpr char16_t kPassword216[] = u"s3cr3t";
+constexpr char16_t kPassword1[] = u"fnlsr4@cm^mdls@fkspnsg3d";
+constexpr char16_t kPassword216[] =
+    u"pmsFlsnoab4nsl#losb@skpfnsbkjb^klsnbs!cns";
 
 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
 constexpr char16_t kWeakPassword1[] = u"123456";
 constexpr char16_t kWeakPassword216[] =
     u"abcdabcdabcdabcdabcdabcdabcdabcdabcdabcda";
-constexpr char16_t kStrongPassword116[] = u"fnlsr4@cm^mdls@fkspnsg3d";
-constexpr char16_t kStrongPassword2[] =
-    u"pmsFlsnoab4nsl#losb@skpfnsbkjb^klsnbs!cns";
 // Delay in milliseconds.
 constexpr int kDelay = 2;
 #endif  // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
@@ -54,7 +52,6 @@
 struct MockInsecureCredentialsManagerObserver
     : InsecureCredentialsManager::Observer {
   MOCK_METHOD(void, OnInsecureCredentialsChanged, (), (override));
-  MOCK_METHOD(void, OnWeakCredentialsChanged, (), (override));
 };
 
 using StrictMockInsecureCredentialsManagerObserver =
@@ -145,14 +142,12 @@
       {InsecureType::kLeaked, InsecurityMetadata()});
 
   EXPECT_CALL(observer, OnInsecureCredentialsChanged);
-  EXPECT_CALL(observer, OnWeakCredentialsChanged);
   store().UpdateLogin(password_form);
   RunUntilIdle();
 
   // Remove should notify, and observers should be passed an empty list.
   password_form.password_issues.clear();
   EXPECT_CALL(observer, OnInsecureCredentialsChanged);
-  EXPECT_CALL(observer, OnWeakCredentialsChanged);
   store().UpdateLogin(password_form);
 
   RunUntilIdle();
@@ -180,27 +175,23 @@
 
   // Adding a saved password should notify observers.
   EXPECT_CALL(observer, OnInsecureCredentialsChanged);
-  EXPECT_CALL(observer, OnWeakCredentialsChanged);
   store().AddLogin(saved_password);
   RunUntilIdle();
 
   // Updating a saved password should notify observers.
   saved_password.password_value = kPassword216;
   EXPECT_CALL(observer, OnInsecureCredentialsChanged);
-  EXPECT_CALL(observer, OnWeakCredentialsChanged);
   store().UpdateLogin(saved_password);
   RunUntilIdle();
 
   // Removing a saved password should notify observers.
   EXPECT_CALL(observer, OnInsecureCredentialsChanged);
-  EXPECT_CALL(observer, OnWeakCredentialsChanged);
   store().RemoveLogin(saved_password);
   RunUntilIdle();
 
   // After an observer is removed it should no longer receive notifications.
   provider().RemoveObserver(&observer);
   EXPECT_CALL(observer, OnInsecureCredentialsChanged).Times(0);
-  EXPECT_CALL(observer, OnWeakCredentialsChanged).Times(0);
   store().AddLogin(saved_password);
   RunUntilIdle();
 }
@@ -340,7 +331,7 @@
   AdvanceClock(base::Milliseconds(kDelay));
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(), IsEmpty());
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
 
   histogram_tester().ExpectUniqueSample(
       "PasswordManager.WeakCheck.CheckedPasswords", 0, 1);
@@ -352,8 +343,8 @@
 
 TEST_F(InsecureCredentialsManagerTest, WeakCredentialsNotFound) {
   std::vector<PasswordForm> passwords = {
-      MakeSavedPassword(kExampleCom, kUsername1, kStrongPassword116),
-      MakeSavedPassword(kExampleCom, kUsername2, kStrongPassword2)};
+      MakeSavedPassword(kExampleCom, kUsername1, kPassword1),
+      MakeSavedPassword(kExampleCom, kUsername2, kPassword216)};
 
   store().AddLogin(passwords[0]);
   store().AddLogin(passwords[1]);
@@ -366,7 +357,7 @@
   AdvanceClock(base::Milliseconds(2 * kDelay));
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(), IsEmpty());
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
 
   histogram_tester().ExpectUniqueSample(
       "PasswordManager.WeakCheck.CheckedPasswords", 2, 1);
@@ -381,7 +372,7 @@
 TEST_F(InsecureCredentialsManagerTest, DetectedWeakCredential) {
   std::vector<PasswordForm> passwords = {
       MakeSavedPassword(kExampleCom, kUsername1, kWeakPassword1),
-      MakeSavedPassword(kExampleCom, kUsername2, kStrongPassword116)};
+      MakeSavedPassword(kExampleCom, kUsername2, kPassword216)};
 
   store().AddLogin(passwords[0]);
   store().AddLogin(passwords[1]);
@@ -394,7 +385,7 @@
   AdvanceClock(base::Milliseconds(kDelay));
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(passwords[0])));
 
   histogram_tester().ExpectUniqueSample(
@@ -408,7 +399,7 @@
 }
 
 // Tests that credentials with the same signon_realm and username, but different
-// passwords will be both returned by GetWeakCredentialEntries().
+// passwords will be both returned by GetInsecureCredentialEntries().
 TEST_F(InsecureCredentialsManagerTest,
        FindBothWeakCredentialsWithDifferentPasswords) {
   std::vector<PasswordForm> passwords = {
@@ -424,7 +415,7 @@
   AdvanceClock(base::Milliseconds(kDelay));
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(passwords[0]),
                           CredentialUIEntry(passwords[1])));
 
@@ -439,7 +430,7 @@
 }
 
 // Tests that credentials with the same signon_realm, username and passwords
-// will be joind and GetWeakCredentialEntries() will return one credential.
+// will be joind and GetInsecureCredentialEntries() will return one credential.
 TEST_F(InsecureCredentialsManagerTest,
        JoinWeakCredentialsWithTheSamePasswords) {
   std::vector<PasswordForm> passwords = {
@@ -454,7 +445,7 @@
   AdvanceClock(base::Milliseconds(kDelay));
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(passwords[0])));
 
   histogram_tester().ExpectUniqueSample(
@@ -470,7 +461,7 @@
 TEST_F(InsecureCredentialsManagerTest, BothWeakAndCompromisedCredentialsExist) {
   std::vector<PasswordForm> passwords = {
       MakeSavedPassword(kExampleCom, kUsername1, kWeakPassword1),
-      MakeSavedPassword(kExampleCom, kUsername2, kStrongPassword116)};
+      MakeSavedPassword(kExampleCom, kUsername2, kPassword216)};
   passwords.at(0).password_issues.insert(
       {InsecureType::kLeaked, InsecurityMetadata()});
   passwords.at(1).password_issues.insert(
@@ -484,11 +475,17 @@
   AdvanceClock(base::Milliseconds(kDelay));
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
-              ElementsAre(CredentialUIEntry(passwords[0])));
+  std::vector<CredentialUIEntry> credentials;
+  credentials.emplace_back(passwords[0]);
+  credentials.emplace_back(passwords[1]);
+
+  credentials[0].password_issues.insert(
+      {password_manager::InsecureType::kWeak,
+       password_manager::InsecurityMetadata(base::Time(),
+                                            password_manager::IsMuted(false))});
+
   EXPECT_THAT(provider().GetInsecureCredentialEntries(),
-              ElementsAre(CredentialUIEntry(passwords[0]),
-                          CredentialUIEntry(passwords[1])));
+              ElementsAreArray(credentials));
 
   histogram_tester().ExpectUniqueSample(
       "PasswordManager.WeakCheck.CheckedPasswords", 2, 1);
@@ -501,7 +498,7 @@
 }
 
 // Checks that for a credential that is both weak and compromised,
-// GetWeakCredentialEntries and GetInsecureCredentials will return this
+// GetInsecureCredentialEntries and GetInsecureCredentials will return this
 // credential in one instance.
 TEST_F(InsecureCredentialsManagerTest, SingleCredentialIsWeakAndCompromised) {
   std::vector<PasswordForm> passwords = {
@@ -517,7 +514,7 @@
   AdvanceClock(base::Milliseconds(kDelay));
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(passwords[0])));
   EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(passwords[0])));
@@ -882,13 +879,23 @@
   store().AddLogin(password);
   RunUntilIdle();
 
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Weak passwords are filtered on Android and iOS.
   ASSERT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
+#else
+  ASSERT_THAT(provider().GetInsecureCredentialEntries(), SizeIs(1));
+#endif
 
   EXPECT_FALSE(provider().MuteCredential(CredentialUIEntry(password)));
 
   RunUntilIdle();
 
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Weak passwords are filtered on Android and iOS.
   EXPECT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
+#else
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(), SizeIs(1));
+#endif
   EXPECT_FALSE(store()
                    .stored_passwords()
                    .at(kExampleCom)
@@ -907,13 +914,23 @@
   store().AddLogin(password);
   RunUntilIdle();
 
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Weak passwords are filtered on Android and iOS.
   ASSERT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
+#else
+  ASSERT_THAT(provider().GetInsecureCredentialEntries(), SizeIs(1));
+#endif
 
   EXPECT_FALSE(provider().UnmuteCredential(CredentialUIEntry(password)));
 
   RunUntilIdle();
 
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Weak passwords are filtered on Android and iOS.
   EXPECT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
+#else
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(), SizeIs(1));
+#endif
 
   EXPECT_TRUE(store()
                   .stored_passwords()
@@ -934,13 +951,23 @@
   store().AddLogin(password);
   RunUntilIdle();
 
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Reused passwords are filtered on Android and iOS.
   ASSERT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
+#else
+  ASSERT_THAT(provider().GetInsecureCredentialEntries(), SizeIs(1));
+#endif
 
   EXPECT_FALSE(provider().MuteCredential(CredentialUIEntry(password)));
 
   RunUntilIdle();
 
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Reused passwords are filtered on Android and iOS.
   EXPECT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
+#else
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(), SizeIs(1));
+#endif
   EXPECT_FALSE(store()
                    .stored_passwords()
                    .at(kExampleCom)
@@ -959,13 +986,23 @@
   store().AddLogin(password);
   RunUntilIdle();
 
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Reused passwords are filtered on Android and iOS.
   ASSERT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
+#else
+  ASSERT_THAT(provider().GetInsecureCredentialEntries(), SizeIs(1));
+#endif
 
   EXPECT_FALSE(provider().UnmuteCredential(CredentialUIEntry(password)));
 
   RunUntilIdle();
 
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
+  // Reused passwords are filtered on Android and iOS.
   EXPECT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
+#else
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(), SizeIs(1));
+#endif
   EXPECT_TRUE(store()
                   .stored_passwords()
                   .at(kExampleCom)
@@ -1027,16 +1064,16 @@
 
   provider().StartWeakCheck();
   RunUntilIdle();
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(password_form)));
 
   CredentialUIEntry original_credential(password_form),
       updated_credential = original_credential;
-  updated_credential.password = kStrongPassword116;
+  updated_credential.password = kPassword216;
   presenter().EditSavedCredentials(original_credential, updated_credential);
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(), IsEmpty());
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(), IsEmpty());
 }
 
 // Test verifies that editing a weak credential to another weak credential
@@ -1050,7 +1087,7 @@
 
   provider().StartWeakCheck();
   RunUntilIdle();
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(password_form)));
 
   CredentialUIEntry original_credential(password_form),
@@ -1059,12 +1096,12 @@
   presenter().EditSavedCredentials(original_credential, updated_credential);
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(updated_credential));
 }
 
-// Verifues that GetWeakCredentialEntries() returns sorted weak credentials by
-// using CreateSortKey.
+// Verifues that GetInsecureCredentialEntries() returns sorted weak credentials
+// by using CreateSortKey.
 TEST_F(InsecureCredentialsManagerTest, GetWeakCredentialsReturnsSortedData) {
   const std::vector<PasswordForm> password_forms = {
       MakeSavedPassword("http://example-a.com", u"user_a1", u"pwd"),
@@ -1080,16 +1117,16 @@
   provider().StartWeakCheck();
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(password_forms[0]),
                           CredentialUIEntry(password_forms[1]),
                           CredentialUIEntry(password_forms[2]),
                           CredentialUIEntry(password_forms[3])));
 }
 
-// Verifues that GetWeakCredentialEntries() returns sorted weak credentials by
-// using CreateSortKey.
-TEST_F(InsecureCredentialsManagerTest, GetWeakCredentialEntries) {
+// Verifues that GetInsecureCredentialEntries() returns sorted weak credentials
+// by using CreateSortKey.
+TEST_F(InsecureCredentialsManagerTest, GetInsecureCredentialEntries) {
   const std::vector<PasswordForm> password_forms = {
       MakeSavedPassword("http://example-a.com", u"user_a1", u"pwd"),
       MakeSavedPassword("http://example-a.com", u"user_a2", u"pwd")};
@@ -1100,11 +1137,12 @@
   provider().StartWeakCheck();
   RunUntilIdle();
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(password_forms[0]),
                           CredentialUIEntry(password_forms[1])));
 }
-#endif  // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
+
+#else
 
 TEST_F(InsecureCredentialsManagerTest, GetInsecureCredentialsFiltersWeak) {
   PasswordForm password1 =
@@ -1125,6 +1163,8 @@
               ElementsAre(CredentialUIEntry(password1)));
 }
 
+#endif  // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
+
 TEST_F(InsecureCredentialsManagerTest,
        GetInsecureCredentialsFiltersDuplicates) {
   PasswordForm password1 =
@@ -1259,7 +1299,7 @@
   expected_form.in_store =
       PasswordForm::Store::kProfileStore | PasswordForm::Store::kAccountStore;
 
-  EXPECT_THAT(provider().GetWeakCredentialEntries(),
+  EXPECT_THAT(provider().GetInsecureCredentialEntries(),
               ElementsAre(CredentialUIEntry(expected_form)));
 }
 
diff --git a/components/password_manager/core/common/password_manager_features.cc b/components/password_manager/core/common/password_manager_features.cc
index 20e067a0..94e573b 100644
--- a/components/password_manager/core/common/password_manager_features.cc
+++ b/components/password_manager/core/common/password_manager_features.cc
@@ -326,6 +326,31 @@
 extern const base::FeatureParam<std::string> kRetriableGmsApiErrors = {
     &kUnifiedPasswordManagerAndroid, "retriable_api_errors", ""};
 
+// Enables fallback to the Chrome built-in backend if the operation executed on
+// the GMS Core backend returns with error. Errors listed in the
+// |kIgnoredGmsApiErrors| will not fallback and will be directly returned to the
+// caller to be addressed in a specific way.
+
+// Fallback on AddLogin and UpdateLogin operations. This is default behaviour
+// since M103.
+extern const base::FeatureParam<bool> kFallbackOnModifyingOperations = {
+    &kUnifiedPasswordManagerAndroid, "fallback_on_modifying_operations", true};
+// Fallback on RemoveLogin* operations.
+extern const base::FeatureParam<bool> kFallbackOnRemoveOperations = {
+    &kUnifiedPasswordManagerAndroid, "fallback_on_remove_operations", false};
+// Fallback on FillMatchingLogins which is needed to perform autofill and could
+// affect user experience.
+extern const base::FeatureParam<bool> kFallbackOnUserAffectingReadOperations = {
+    &kUnifiedPasswordManagerAndroid,
+    "fallback_on_user_affecting_read_operations", false};
+// Fallback on GetAllLogins* and GetAutofillableLogins operations which are
+// needed for certain features (e.g. PhishGuard) but do not affect the core
+// experience.
+extern const base::FeatureParam<bool>
+    kFallbackOnNonUserAffectingReadOperations = {
+        &kUnifiedPasswordManagerAndroid,
+        "fallback_on_non_user_affecting_read_operations", false};
+
 // The maximum possible number of reenrollments into the UPM. Needed to avoid a
 // patchy experience for users who experience errors in communication with
 // Google Mobile Services on a regular basis.
@@ -336,6 +361,12 @@
 // avoid wasting resources of users who have persistent errors.
 extern const base::FeatureParam<int> kMaxUPMReenrollmentAttempts = {
     &kUnifiedPasswordManagerReenrollment, "max_reenrollment_attempts", 0};
+
+// Whether to ignore the 24h timeout in between auth error messages as
+// well as the 30 mins distance to sync error messages.
+extern const base::FeatureParam<bool> kIgnoreAuthErrorMessageTimeouts = {
+    &kUnifiedPasswordManagerErrorMessages, "ignore_auth_error_message_timeouts",
+    false};
 #endif
 
 // Field trial identifier for password generation requirements.
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h
index e3a7281..ccb5bfac 100644
--- a/components/password_manager/core/common/password_manager_features.h
+++ b/components/password_manager/core/common/password_manager_features.h
@@ -105,6 +105,10 @@
 extern const base::FeatureParam<int> kGmsApiErrorListVersion;
 extern const base::FeatureParam<std::string> kIgnoredGmsApiErrors;
 extern const base::FeatureParam<std::string> kRetriableGmsApiErrors;
+extern const base::FeatureParam<bool> kFallbackOnModifyingOperations;
+extern const base::FeatureParam<bool> kFallbackOnRemoveOperations;
+extern const base::FeatureParam<bool> kFallbackOnUserAffectingReadOperations;
+extern const base::FeatureParam<bool> kFallbackOnNonUserAffectingReadOperations;
 constexpr base::FeatureParam<UpmExperimentVariation>::Option
     kUpmExperimentVariationOption[] = {
         {UpmExperimentVariation::kEnableForSyncingUsers, "0"},
@@ -120,6 +124,8 @@
 
 extern const base::FeatureParam<int> kMaxUPMReenrollments;
 extern const base::FeatureParam<int> kMaxUPMReenrollmentAttempts;
+
+extern const base::FeatureParam<bool> kIgnoreAuthErrorMessageTimeouts;
 #endif
 
 // Field trial and corresponding parameters.
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index 62fac53..891c76e 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -8060,7 +8060,7 @@
       'caption': 'Re-enable the deprecated async interface for <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE">FileSystemSyncAccessHandle</ph> in File System Access API',
       'type': 'main',
       'schema': { 'type': 'boolean' },
-      'supported_on': ['chrome.*:107-110', 'chrome_os:107-110', 'android:107-110'],
+      'supported_on': ['chrome.*:108-110', 'chrome_os:108-110', 'android:108-110'],
       'future_on': ['fuchsia'],
       'features': {
         'dynamic_refresh': True,
@@ -8080,7 +8080,7 @@
       'example_value': False,
       'id': 1020,
       'tags': [],
-      'desc': '''Starting in M107, all of <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE">FileSystemSyncAccessHandle</ph> methods will be invoked synchronously.
+      'desc': '''Starting in M108, all of <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE">FileSystemSyncAccessHandle</ph> methods will be invoked synchronously.
       Until M110, this policy re-enables asynchronous invocation of <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE">FileSystemSyncAccessHandle</ph> methods.
       If this policy is set to Enabled, <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE">FileSystemSyncAccessHandle</ph> methods are invoked asynchronously.
       If this policy is set to Disabled or not set, all of <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE">FileSystemSyncAccessHandle</ph> methods are invoked synchronously.''',
@@ -15406,6 +15406,16 @@
         'dynamic_refresh': True,
         'per_profile': False,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Do not consider the user as idle while video plays',
+        },
+        {
+          'value': False,
+          'caption': 'Consider the user as idle while video plays',
+        },
+      ],
       'example_value': True,
       'id': 183,
       'caption': '''Specify whether video activity affects power management''',
@@ -15540,6 +15550,16 @@
         'dynamic_refresh': True,
         'per_profile': False,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Start power management delays and session length limits after initial user activity',
+        },
+        {
+          'value': False,
+          'caption': 'Start power management delays and session length limits at session start',
+        },
+      ],
       'example_value': True,
       'id': 247,
       'caption': '''Wait for initial user activity''',
@@ -15837,7 +15857,22 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Show accessibility options in the system tray menu',
+        },
+        {
+          'value': False,
+          'caption': 'Hide accessibility options in the system tray menu',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
       'example_value': True,
+      'default': None,
       'id': 188,
       'caption': '''Show accessibility options in system tray menu''',
       'tags': [],
@@ -15857,8 +15892,23 @@
         'can_be_recommended': True,
         'dynamic_refresh': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Show accessibility options in the login screen system tray menu',
+        },
+        {
+          'value': False,
+          'caption': 'Hide accessibility options in the login screen system tray menu',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
       'device_only': True,
       'example_value': True,
+      'default': None,
       'id': 646,
       'caption': '''Show accessibility options in system tray menu in the login screen''',
       'tags': [],
@@ -15879,7 +15929,22 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Enable large cursor',
+        },
+        {
+          'value': False,
+          'caption': 'Disable large cursor',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
       'example_value': True,
+      'default': None,
       'id': 211,
       'caption': '''Enable large cursor''',
       'tags': [],
@@ -15898,7 +15963,22 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Enable spoken feedback',
+        },
+        {
+          'value': False,
+          'caption': 'Disable spoken feedback',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
       'example_value': True,
+      'default': None,
       'id': 212,
       'caption': '''Enable spoken feedback''',
       'tags': [],
@@ -15917,7 +15997,22 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Enable high contrast',
+        },
+        {
+          'value': False,
+          'caption': 'Disable high contrast',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
       'example_value': True,
+      'default': None,
       'id': 213,
       'caption': '''Enable high contrast mode''',
       'tags': [],
@@ -15937,7 +16032,22 @@
         'dynamic_refresh': True,
         'per_profile': False,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Enable accessibility shortcuts on the sign-in screen',
+        },
+        {
+          'value': False,
+          'caption': 'Disable accessibility shortcuts on the sign-in screen',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
       'example_value': True,
+      'default': None,
       'id': 661,
       'caption': '''Enable accessibility features shortcuts on the login screen''',
       'tags': [],
@@ -15962,7 +16072,22 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Enable accessibility shortcuts',
+        },
+        {
+          'value': False,
+          'caption': 'Disable accessibility shortcuts',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
       'example_value': True,
+      'default': None,
       'id': 659,
       'caption': '''Enable accessibility features shortcuts''',
       'tags': [],
@@ -15987,7 +16112,22 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Enable on-screen keyboard',
+        },
+        {
+          'value': False,
+          'caption': 'Disable on-screen keyboard',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
       'example_value': True,
+      'default': None,
       'id': 255,
       'caption': '''Enable on-screen keyboard''',
       'tags': [],
diff --git a/components/policy/test_support/fake_dmserver.cc b/components/policy/test_support/fake_dmserver.cc
index 6d1e90ce..a85c38203 100644
--- a/components/policy/test_support/fake_dmserver.cc
+++ b/components/policy/test_support/fake_dmserver.cc
@@ -33,6 +33,16 @@
 constexpr char kPoliciesKey[] = "policies";
 constexpr char kExternalPoliciesKey[] = "external_policies";
 constexpr char kManagedUsersKey[] = "managed_users";
+constexpr char kDeviceAffiliationIdsKey[] = "device_affiliation_ids";
+constexpr char kUserAffiliationIdsKey[] = "user_affiliation_ids";
+constexpr char kDirectoryApiIdKey[] = "directory_api_id";
+constexpr char kRequestErrorsKey[] = "request_errors";
+constexpr char kRobotApiAuthCodeKey[] = "robot_api_auth_code";
+constexpr char kAllowSetDeviceAttributesKey[] = "allow_set_device_attributes";
+constexpr char kInitialEnrollmentStateKey[] = "initial_enrollment_state";
+constexpr char kManagementDomainKey[] = "management_domain";
+constexpr char kInitialEnrollmentModeKey[] = "initial_enrollment_mode";
+constexpr char kCurrentKeyIndexKey[] = "current_key_index";
 constexpr char kPolicyUserKey[] = "policy_user";
 
 constexpr char kDefaultPolicyBlobFilename[] = "policy.json";
@@ -239,11 +249,126 @@
     }
   }
 
+  base::Value::List* device_affiliation_ids =
+      dict.FindList(kDeviceAffiliationIdsKey);
+  if (device_affiliation_ids) {
+    for (const base::Value& device_affiliation_id : *device_affiliation_ids) {
+      const std::string* device_affiliation_id_val =
+          device_affiliation_id.GetIfString();
+      if (device_affiliation_id_val) {
+        LOG(INFO) << "Adding " << *device_affiliation_id_val
+                  << " as a device affiliation id";
+        policy_storage()->add_device_affiliation_id(*device_affiliation_id_val);
+      }
+    }
+  }
+
+  base::Value::List* user_affiliation_ids =
+      dict.FindList(kUserAffiliationIdsKey);
+  if (user_affiliation_ids) {
+    for (const base::Value& user_affiliation_id : *user_affiliation_ids) {
+      const std::string* user_affiliation_id_val =
+          user_affiliation_id.GetIfString();
+      if (user_affiliation_id_val) {
+        LOG(INFO) << "Adding " << *user_affiliation_id_val
+                  << " as a user affiliation id";
+        policy_storage()->add_user_affiliation_id(*user_affiliation_id_val);
+      }
+    }
+  }
+
+  std::string* directory_api_id = dict.FindString(kDirectoryApiIdKey);
+  if (directory_api_id) {
+    LOG(INFO) << "Adding " << *directory_api_id << " as a directory API ID";
+    policy_storage()->set_directory_api_id(*directory_api_id);
+  }
+
+  if (dict.contains(kAllowSetDeviceAttributesKey)) {
+    absl::optional<bool> allow_set_device_attributes =
+        dict.FindBool(kAllowSetDeviceAttributesKey);
+    if (!allow_set_device_attributes.has_value()) {
+      base::Value* v = dict.Find(kAllowSetDeviceAttributesKey);
+      LOG(ERROR)
+          << "The allow_set_device_attributes key isn't a bool, found type "
+          << v->type() << ", found value " << *v;
+      return false;
+    }
+    policy_storage()->set_allow_set_device_attributes(
+        allow_set_device_attributes.value());
+  }
+
+  std::string* robot_api_auth_code = dict.FindString(kRobotApiAuthCodeKey);
+  if (robot_api_auth_code) {
+    LOG(INFO) << "Adding " << *robot_api_auth_code
+              << " as a robot api auth code";
+    policy_storage()->set_robot_api_auth_code(*robot_api_auth_code);
+  }
+
+  base::Value::Dict* request_errors = dict.FindDict(kRequestErrorsKey);
+  if (request_errors) {
+    for (auto request_error : *request_errors) {
+      absl::optional<int> net_error_code = request_error.second.GetIfInt();
+      if (!net_error_code.has_value()) {
+        LOG(ERROR) << "The error code isn't an int";
+        return false;
+      }
+      LOG(INFO) << "Configuring request " << request_error.first << " to error "
+                << net_error_code.value();
+      EmbeddedPolicyTestServer::ConfigureRequestError(
+          request_error.first,
+          static_cast<net::HttpStatusCode>(net_error_code.value()));
+    }
+  }
+
+  base::Value::Dict* initial_enrollment_state =
+      dict.FindDict(kInitialEnrollmentStateKey);
+  if (initial_enrollment_state) {
+    for (base::detail::dict_iterator::reference state :
+         *initial_enrollment_state) {
+      if (!state.second.is_dict()) {
+        LOG(ERROR) << "The current state value for key " << state.first
+                   << " isn't a dict";
+        return false;
+      }
+      base::Value::Dict& state_val = state.second.GetDict();
+      std::string* management_domain =
+          state_val.FindString(kManagementDomainKey);
+      if (!management_domain) {
+        LOG(ERROR) << "The management_domain key isn't a string";
+        return false;
+      }
+      absl::optional<int> initial_enrollment_mode =
+          state_val.FindInt(kInitialEnrollmentModeKey);
+      if (!initial_enrollment_mode.has_value()) {
+        LOG(ERROR) << "The initial_enrollment_mode key isn't an int";
+        return false;
+      }
+      policy::PolicyStorage::InitialEnrollmentState initial_value;
+      initial_value.management_domain = *management_domain;
+      initial_value.initial_enrollment_mode = static_cast<
+          enterprise_management::DeviceInitialEnrollmentStateResponse::
+              InitialEnrollmentMode>(initial_enrollment_mode.value());
+      policy_storage()->SetInitialEnrollmentState(state.first, initial_value);
+    }
+  }
+
+  if (dict.contains(kCurrentKeyIndexKey)) {
+    absl::optional<int> current_key_index = dict.FindInt(kCurrentKeyIndexKey);
+    if (!current_key_index.has_value()) {
+      base::Value* v = dict.Find(kCurrentKeyIndexKey);
+      LOG(ERROR) << "The current_key_index key isn't an int, found type "
+                 << v->type() << ", found value " << *v;
+      return false;
+    }
+    policy_storage()->signature_provider()->set_current_key_version(
+        current_key_index.value());
+  }
+
   base::Value::List* policies = dict.FindList(kPoliciesKey);
   if (policies) {
     for (const base::Value& policy : *policies) {
       if (!policy.is_dict()) {
-        LOG(ERROR) << "The current policy isn't dict";
+        LOG(ERROR) << "The current policy isn't a dict";
         return false;
       }
       if (!SetPolicyPayload(policy.GetDict().FindString(kPolicyTypeKey),
@@ -259,7 +384,7 @@
   if (external_policies) {
     for (const base::Value& policy : *external_policies) {
       if (!policy.is_dict()) {
-        LOG(ERROR) << "The current external policy isn't dict";
+        LOG(ERROR) << "The current external policy isn't a dict";
         return false;
       }
       if (!SetExternalPolicyPayload(
@@ -392,7 +517,7 @@
     return false;
   }
   if (!value->is_dict()) {
-    LOG(ERROR) << "The client state file isn't dict.";
+    LOG(ERROR) << "The client state file isn't a dict.";
     return false;
   }
   base::Value::Dict& dict = value->GetDict();
diff --git a/components/policy/test_support/fake_dmserver.h b/components/policy/test_support/fake_dmserver.h
index 3903010..c670d08 100644
--- a/components/policy/test_support/fake_dmserver.h
+++ b/components/policy/test_support/fake_dmserver.h
@@ -21,6 +21,8 @@
 message of the policies value encoded in base64.
 The root dictionary also contains a "policy_user" key which indicates the
 current user.
+All the fields are described in the device_management_backend.proto
+(https://source.chromium.org/chromium/chromium/src/+/main:components/policy/proto/device_management_backend.proto;l=516?q=PolicyData)
 
 Example:
 {
@@ -50,6 +52,25 @@
     "secret123456"
   ],
   "policy_user" : "tast-user@managedchrome.com",
+  "current_key_index": 0,
+  "robot_api_auth_code": "code",
+  "directory_api_id": "id",
+  "request_errors": {
+    "register": 500,
+  }
+  "device_affiliation_ids" : [
+    "device_id"
+  ],
+  "user_affiliation_ids" : [
+    "user_id"
+  ],
+  "allow_set_device_attributes" : false,
+  "initial_enrollment_state": {
+    "TEST_serial": {
+      "initial_enrollment_mode": 2,
+      "management_domain": "test-domain.com"
+    }
+  }
 }
 */
 
diff --git a/components/policy/test_support/fake_dmserver_unittest.cc b/components/policy/test_support/fake_dmserver_unittest.cc
index b5255082..fb5ae1e9 100644
--- a/components/policy/test_support/fake_dmserver_unittest.cc
+++ b/components/policy/test_support/fake_dmserver_unittest.cc
@@ -395,7 +395,23 @@
       R"(ovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vY2hyb21pdW1vcy10ZXN0LWFzc2V0cy1wdWJ)"
       R"(saWMvZW50ZXJwcmlzZS9wcmludGVycy5qc29uIn0="
         }
-      ]
+      ],
+      "current_key_index": 1,
+      "robot_api_auth_code": "code",
+      "directory_api_id": "id",
+      "device_affiliation_ids" : [
+        "device_id"
+      ],
+      "user_affiliation_ids" : [
+        "user_id"
+      ],
+      "allow_set_device_attributes" : false,
+      "initial_enrollment_state": {
+        "TEST_serial": {
+          "initial_enrollment_mode": 2,
+          "management_domain": "test-domain.com"
+        }
+      }
     }
   )"));
   ASSERT_TRUE(base::WriteFile(client_state_path_, R"(
@@ -442,6 +458,81 @@
             "Q0ZDY1NzQ5Y2FiNWVjZDBmYTdkYjIxMWMxMmEzYjgiLCJ1cmwiOiJodHRwczovL3N0"
             "b3JhZ2UuZ29vZ2xlYXBpcy5jb20vY2hyb21pdW1vcy10ZXN0LWFzc2V0cy1wdWJsaW"
             "MvZW50ZXJwcmlzZS9wcmludGVycy5qc29uIn0=");
+
+  int current_key_index = fake_dmserver.policy_storage()
+                              ->signature_provider()
+                              ->current_key_version();
+  EXPECT_EQ(current_key_index, 1);
+
+  std::string robot_api_auth_code =
+      fake_dmserver.policy_storage()->robot_api_auth_code();
+  EXPECT_EQ(robot_api_auth_code, "code");
+
+  std::string directory_api_id =
+      fake_dmserver.policy_storage()->directory_api_id();
+  EXPECT_EQ(directory_api_id, "id");
+
+  bool allow_set_device_attributes =
+      fake_dmserver.policy_storage()->allow_set_device_attributes();
+  EXPECT_FALSE(allow_set_device_attributes);
+
+  std::vector<std::string> device_affiliation_ids =
+      fake_dmserver.policy_storage()->device_affiliation_ids();
+  EXPECT_EQ(device_affiliation_ids.size(), 1u);
+  EXPECT_EQ(device_affiliation_ids[0], "device_id");
+
+  std::vector<std::string> user_affiliation_ids =
+      fake_dmserver.policy_storage()->user_affiliation_ids();
+  EXPECT_EQ(user_affiliation_ids.size(), 1u);
+  EXPECT_EQ(user_affiliation_ids[0], "user_id");
+
+  const policy::PolicyStorage::InitialEnrollmentState*
+      initial_enrollment_state =
+          fake_dmserver.policy_storage()->GetInitialEnrollmentState(
+              "TEST_serial");
+  EXPECT_TRUE(initial_enrollment_state);
+  EXPECT_EQ(initial_enrollment_state->management_domain, "test-domain.com");
+  EXPECT_EQ(
+      initial_enrollment_state->initial_enrollment_mode,
+      static_cast<enterprise_management::DeviceInitialEnrollmentStateResponse::
+                      InitialEnrollmentMode>(2));
+}
+
+TEST_F(FakeDMServerTest, HandlePolicyRequestWithCustomError_Succeeds) {
+  FakeDMServer fake_dmserver(policy_blob_path_.MaybeAsASCII(),
+                             client_state_path_.MaybeAsASCII());
+  EXPECT_TRUE(fake_dmserver.Start());
+
+  ASSERT_TRUE(base::WriteFile(policy_blob_path_,
+                              R"(
+    {
+      "managed_users" : [ "*" ],
+      "policy_user" : "tast-user@managedchrome.com",
+      "request_errors": { "policy": 500 },
+      "policies" : [
+        {
+          "policy_type" : "google/chromeos/user", "value" : "uhMCEAE="
+        }
+      ]
+    }
+  )"));
+  ASSERT_TRUE(base::WriteFile(client_state_path_, R"(
+    {
+      "fake_device_id" : {
+        "device_id" : "fake_device_id",
+        "device_token" : "fake_device_token",
+        "machine_name" : "fake_machine_name",
+        "username" : "tast-user@managedchrome.com",
+        "state_keys" : [ "fake_state_key" ],
+        "allowed_policy_types" : [ "google/chrome/extension",
+        "google/chromeos/user" ]
+      }
+    }
+  )"));
+  EXPECT_EQ(SendRequest(fake_dmserver.GetServiceURL(),
+                        "/?apptype=Chrome&deviceid=fake_device_id&devicetype=2&"
+                        "oauth_token=fake_policy_token&request=policy"),
+            net::HTTP_INTERNAL_SERVER_ERROR);
 }
 
 TEST_F(FakeDMServerTest, HandleExternalPolicyRequest_Succeeds) {
@@ -542,6 +633,132 @@
             net::HTTP_INTERNAL_SERVER_ERROR);
 }
 
+TEST_F(FakeDMServerTest, ReadPolicyBlobFile_WithNonIntRequestError_Fails) {
+  FakeDMServer fake_dmserver(policy_blob_path_.MaybeAsASCII(),
+                             client_state_path_.MaybeAsASCII());
+  EXPECT_TRUE(fake_dmserver.Start());
+
+  ASSERT_TRUE(base::WriteFile(policy_blob_path_, R"(
+    {
+      "managed_users" : [ "*" ],
+      "policy_user" : "tast-user@managedchrome.com",
+      "request_errors": { "policy": "non int value" },
+      "policies" : [
+        {
+          "policy_type" : "google/chromeos/user", "value" : "uhMCEAE="
+        }
+      ]
+    }
+  )"));
+  EXPECT_EQ(SendRequest(fake_dmserver.GetServiceURL(),
+                        "/?apptype=Chrome&deviceid=fake_device_id&devicetype=2&"
+                        "oauth_token=fake_policy_token&request=policy"),
+            net::HTTP_INTERNAL_SERVER_ERROR);
+}
+
+TEST_F(FakeDMServerTest,
+       ReadPolicyBlobFile_WithNonBoolAllowSetDeviceAttributes_Fails) {
+  FakeDMServer fake_dmserver(policy_blob_path_.MaybeAsASCII(),
+                             client_state_path_.MaybeAsASCII());
+  EXPECT_TRUE(fake_dmserver.Start());
+
+  ASSERT_TRUE(base::WriteFile(policy_blob_path_, R"(
+    {
+      "managed_users" : [ "*" ],
+      "policy_user" : "tast-user@managedchrome.com",
+      "allow_set_device_attributes": { "key": "non int value" },
+      "policies" : [
+        {
+          "policy_type" : "google/chromeos/user", "value" : "uhMCEAE="
+        }
+      ]
+    }
+  )"));
+  EXPECT_EQ(SendRequest(fake_dmserver.GetServiceURL(),
+                        "/?apptype=Chrome&deviceid=fake_device_id&devicetype=2&"
+                        "oauth_token=fake_policy_token&request=policy"),
+            net::HTTP_INTERNAL_SERVER_ERROR);
+}
+
+TEST_F(FakeDMServerTest,
+       ReadPolicyBlobFile_WithNonStringManagementDomain_Fails) {
+  FakeDMServer fake_dmserver(policy_blob_path_.MaybeAsASCII(),
+                             client_state_path_.MaybeAsASCII());
+  EXPECT_TRUE(fake_dmserver.Start());
+
+  ASSERT_TRUE(base::WriteFile(policy_blob_path_, R"(
+    {
+      "managed_users" : [ "*" ],
+      "policy_user" : "tast-user@managedchrome.com",
+      "initial_enrollment_state":
+      {
+        "management_domain": 3,
+        "initial_enrollment_mode": 1
+      },
+      "policies" : [
+        {
+          "policy_type" : "google/chromeos/user", "value" : "uhMCEAE="
+        }
+      ]
+    }
+  )"));
+  EXPECT_EQ(SendRequest(fake_dmserver.GetServiceURL(),
+                        "/?apptype=Chrome&deviceid=fake_device_id&devicetype=2&"
+                        "oauth_token=fake_policy_token&request=policy"),
+            net::HTTP_INTERNAL_SERVER_ERROR);
+}
+
+TEST_F(FakeDMServerTest,
+       ReadPolicyBlobFile_WithNonIntInitialEnrollmentMode_Fails) {
+  FakeDMServer fake_dmserver(policy_blob_path_.MaybeAsASCII(),
+                             client_state_path_.MaybeAsASCII());
+  EXPECT_TRUE(fake_dmserver.Start());
+
+  ASSERT_TRUE(base::WriteFile(policy_blob_path_, R"(
+    {
+      "managed_users" : [ "*" ],
+      "policy_user" : "tast-user@managedchrome.com",
+      "initial_enrollment_state":
+      {
+        "management_domain": "domain",
+        "initial_enrollment_mode": "non int value"
+      },
+      "policies" : [
+        {
+          "policy_type" : "google/chromeos/user", "value" : "uhMCEAE="
+        }
+      ]
+    }
+  )"));
+  EXPECT_EQ(SendRequest(fake_dmserver.GetServiceURL(),
+                        "/?apptype=Chrome&deviceid=fake_device_id&devicetype=2&"
+                        "oauth_token=fake_policy_token&request=policy"),
+            net::HTTP_INTERNAL_SERVER_ERROR);
+}
+
+TEST_F(FakeDMServerTest, ReadPolicyBlobFile_WithNonIntCurrentKeyIndex_Fails) {
+  FakeDMServer fake_dmserver(policy_blob_path_.MaybeAsASCII(),
+                             client_state_path_.MaybeAsASCII());
+  EXPECT_TRUE(fake_dmserver.Start());
+
+  ASSERT_TRUE(base::WriteFile(policy_blob_path_, R"(
+    {
+      "managed_users" : [ "*" ],
+      "policy_user" : "tast-user@managedchrome.com",
+      "current_key_index": "non int value",
+      "policies" : [
+        {
+          "policy_type" : "google/chromeos/user", "value" : "uhMCEAE="
+        }
+      ]
+    }
+  )"));
+  EXPECT_EQ(SendRequest(fake_dmserver.GetServiceURL(),
+                        "/?apptype=Chrome&deviceid=fake_device_id&devicetype=2&"
+                        "oauth_token=fake_policy_token&request=policy"),
+            net::HTTP_INTERNAL_SERVER_ERROR);
+}
+
 TEST_F(FakeDMServerTest, SetPolicyPayload_WithoutValueOrTypeField_Fails) {
   FakeDMServer fake_dmserver(policy_blob_path_.MaybeAsASCII(),
                              client_state_path_.MaybeAsASCII());
diff --git a/components/policy/test_support/policy_storage.h b/components/policy/test_support/policy_storage.h
index 56d578e..4dcb521 100644
--- a/components/policy/test_support/policy_storage.h
+++ b/components/policy/test_support/policy_storage.h
@@ -10,6 +10,7 @@
 #include <memory>
 #include <string>
 #include <utility>
+#include <vector>
 
 #include "base/containers/flat_map.h"
 #include "base/containers/flat_set.h"
@@ -96,6 +97,25 @@
     managed_users_.insert(managed_user);
   }
 
+  const std::vector<std::string>& device_affiliation_ids() const {
+    return device_affiliation_ids_;
+  }
+  void add_device_affiliation_id(const std::string& device_affiliation_id) {
+    device_affiliation_ids_.emplace_back(device_affiliation_id);
+  }
+
+  const std::vector<std::string>& user_affiliation_ids() const {
+    return user_affiliation_ids_;
+  }
+  void add_user_affiliation_id(const std::string& user_affiliation_id) {
+    user_affiliation_ids_.emplace_back(user_affiliation_id);
+  }
+
+  const std::string& directory_api_id() const { return directory_api_id_; }
+  void set_directory_api_id(const std::string& directory_api_id) {
+    directory_api_id_ = directory_api_id;
+  }
+
   std::string policy_user() const { return policy_user_; }
   void set_policy_user(const std::string& policy_user) {
     policy_user_ = policy_user;
@@ -182,6 +202,12 @@
 
   base::flat_set<std::string> managed_users_;
 
+  std::vector<std::string> device_affiliation_ids_;
+
+  std::vector<std::string> user_affiliation_ids_;
+
+  std::string directory_api_id_;
+
   std::string policy_user_;
 
   std::string policy_invalidation_topic_;
diff --git a/components/policy/test_support/request_handler_for_policy.cc b/components/policy/test_support/request_handler_for_policy.cc
index f41263a..dae29798 100644
--- a/components/policy/test_support/request_handler_for_policy.cc
+++ b/components/policy/test_support/request_handler_for_policy.cc
@@ -187,6 +187,30 @@
   if (fetch_request.signature_type() != em::PolicyFetchRequest::NONE)
     policy_data.set_public_key_version(signing_key_version);
 
+  if (policy_type == dm_protocol::kChromeUserPolicyType ||
+      policy_type == dm_protocol::kChromePublicAccountPolicyType) {
+    std::vector<std::string> user_affiliation_ids =
+        policy_storage()->user_affiliation_ids();
+    if (!user_affiliation_ids.empty()) {
+      for (const std::string& user_affiliation_id : user_affiliation_ids) {
+        policy_data.add_user_affiliation_ids(user_affiliation_id);
+      }
+    }
+  } else if (policy_type == dm_protocol::kChromeDevicePolicyType) {
+    std::vector<std::string> device_affiliation_ids =
+        policy_storage()->device_affiliation_ids();
+    if (!device_affiliation_ids.empty()) {
+      for (const std::string& device_affiliation_id : device_affiliation_ids) {
+        policy_data.add_device_affiliation_ids(device_affiliation_id);
+      }
+    }
+  }
+
+  std::string directory_api_id = policy_storage()->directory_api_id();
+  if (!directory_api_id.empty()) {
+    policy_data.set_directory_api_id(directory_api_id);
+  }
+
   policy_data.SerializeToString(fetch_response->mutable_policy_data());
 
   if (fetch_request.signature_type() == em::PolicyFetchRequest::SHA1_RSA) {
diff --git a/components/prefs/testing_pref_service.h b/components/prefs/testing_pref_service.h
index 81a68ea..f1628c57 100644
--- a/components/prefs/testing_pref_service.h
+++ b/components/prefs/testing_pref_service.h
@@ -39,6 +39,8 @@
   void SetManagedPref(const std::string& path,
                       std::unique_ptr<base::Value> value);
   void SetManagedPref(const std::string& path, base::Value value);
+  void SetManagedPref(const std::string& path, base::Value::Dict dict);
+  void SetManagedPref(const std::string& path, base::Value::List list);
 
   // Clears the preference on the managed layer and fire observers if the
   // preference has been defined previously.
@@ -48,6 +50,9 @@
   const base::Value* GetSupervisedUserPref(const std::string& path) const;
   void SetSupervisedUserPref(const std::string& path,
                              std::unique_ptr<base::Value> value);
+  void SetSupervisedUserPref(const std::string& path, base::Value value);
+  void SetSupervisedUserPref(const std::string& path, base::Value::Dict dict);
+  void SetSupervisedUserPref(const std::string& path, base::Value::List list);
   void RemoveSupervisedUserPref(const std::string& path);
 
   // Similar to the above, but for extension preferences.
@@ -57,12 +62,17 @@
   const base::Value* GetExtensionPref(const std::string& path) const;
   void SetExtensionPref(const std::string& path,
                         std::unique_ptr<base::Value> value);
+  void SetExtensionPref(const std::string& path, base::Value value);
+  void SetExtensionPref(const std::string& path, base::Value::Dict dict);
+  void SetExtensionPref(const std::string& path, base::Value::List list);
   void RemoveExtensionPref(const std::string& path);
 
   // Similar to the above, but for user preferences.
   const base::Value* GetUserPref(const std::string& path) const;
   void SetUserPref(const std::string& path, std::unique_ptr<base::Value> value);
   void SetUserPref(const std::string& path, base::Value value);
+  void SetUserPref(const std::string& path, base::Value::Dict dict);
+  void SetUserPref(const std::string& path, base::Value::List list);
   void RemoveUserPref(const std::string& path);
 
   // Similar to the above, but for recommended policy preferences.
@@ -70,6 +80,8 @@
   void SetRecommendedPref(const std::string& path,
                           std::unique_ptr<base::Value> value);
   void SetRecommendedPref(const std::string& path, base::Value value);
+  void SetRecommendedPref(const std::string& path, base::Value::Dict dict);
+  void SetRecommendedPref(const std::string& path, base::Value::List list);
   void RemoveRecommendedPref(const std::string& path);
 
   // Do-nothing implementation for TestingPrefService.
@@ -170,6 +182,18 @@
 
 template <class SuperPrefService, class ConstructionPrefRegistry>
 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetManagedPref(const std::string& path, base::Value::Dict dict) {
+  SetManagedPref(path, std::make_unique<base::Value>(std::move(dict)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetManagedPref(const std::string& path, base::Value::List list) {
+  SetManagedPref(path, std::make_unique<base::Value>(std::move(list)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
     RemoveManagedPref(const std::string& path) {
   RemovePref(managed_prefs_.get(), path);
 }
@@ -190,6 +214,24 @@
 
 template <class SuperPrefService, class ConstructionPrefRegistry>
 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetSupervisedUserPref(const std::string& path, base::Value value) {
+  SetSupervisedUserPref(path, base::Value::ToUniquePtrValue(std::move(value)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetSupervisedUserPref(const std::string& path, base::Value::Dict dict) {
+  SetSupervisedUserPref(path, std::make_unique<base::Value>(std::move(dict)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetSupervisedUserPref(const std::string& path, base::Value::List list) {
+  SetSupervisedUserPref(path, std::make_unique<base::Value>(std::move(list)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
     RemoveSupervisedUserPref(const std::string& path) {
   RemovePref(supervised_user_prefs_.get(), path);
 }
@@ -210,6 +252,24 @@
 
 template <class SuperPrefService, class ConstructionPrefRegistry>
 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetExtensionPref(const std::string& path, base::Value value) {
+  SetExtensionPref(path, base::Value::ToUniquePtrValue(std::move(value)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetExtensionPref(const std::string& path, base::Value::Dict dict) {
+  SetExtensionPref(path, std::make_unique<base::Value>(std::move(dict)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetExtensionPref(const std::string& path, base::Value::List list) {
+  SetExtensionPref(path, std::make_unique<base::Value>(std::move(list)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
     RemoveExtensionPref(const std::string& path) {
   RemovePref(extension_prefs_.get(), path);
 }
@@ -235,6 +295,18 @@
 
 template <class SuperPrefService, class ConstructionPrefRegistry>
 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetUserPref(const std::string& path, base::Value::Dict dict) {
+  SetUserPref(path, std::make_unique<base::Value>(std::move(dict)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetUserPref(const std::string& path, base::Value::List list) {
+  SetUserPref(path, std::make_unique<base::Value>(std::move(list)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
     RemoveUserPref(const std::string& path) {
   RemovePref(user_prefs_.get(), path);
 }
@@ -262,6 +334,18 @@
 
 template <class SuperPrefService, class ConstructionPrefRegistry>
 void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetRecommendedPref(const std::string& path, base::Value::Dict dict) {
+  SetRecommendedPref(path, std::make_unique<base::Value>(std::move(dict)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
+    SetRecommendedPref(const std::string& path, base::Value::List list) {
+  SetRecommendedPref(path, std::make_unique<base::Value>(std::move(list)));
+}
+
+template <class SuperPrefService, class ConstructionPrefRegistry>
+void TestingPrefServiceBase<SuperPrefService, ConstructionPrefRegistry>::
     RemoveRecommendedPref(const std::string& path) {
   RemovePref(recommended_prefs_.get(), path);
 }
diff --git a/components/proxy_config/pref_proxy_config_tracker_impl.cc b/components/proxy_config/pref_proxy_config_tracker_impl.cc
index f65ad6a..61f524e0 100644
--- a/components/proxy_config/pref_proxy_config_tracker_impl.cc
+++ b/components/proxy_config/pref_proxy_config_tracker_impl.cc
@@ -265,7 +265,7 @@
 
   const base::Value::Dict& dict =
       pref_service->GetDict(proxy_config::prefs::kProxy);
-  ProxyConfigDictionary proxy_dict(base::Value(dict.Clone()));
+  ProxyConfigDictionary proxy_dict(dict.Clone());
 
   if (PrefConfigToNetConfig(proxy_dict, config)) {
     if (!pref->IsUserModifiable() || pref->HasUserSetting()) {
diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/proxy_config/proxy_config_dictionary.cc
index 102fc93..e2c6ce3 100644
--- a/components/proxy_config/proxy_config_dictionary.cc
+++ b/components/proxy_config/proxy_config_dictionary.cc
@@ -33,10 +33,8 @@
 
 }  // namespace
 
-ProxyConfigDictionary::ProxyConfigDictionary(base::Value dict)
-    : dict_(std::move(dict)) {
-  DCHECK(dict_.is_dict());
-}
+ProxyConfigDictionary::ProxyConfigDictionary(base::Value::Dict dict)
+    : dict_(std::move(dict)) {}
 
 ProxyConfigDictionary::ProxyConfigDictionary(ProxyConfigDictionary&& other) {
   dict_ = std::move(other.dict_);
@@ -45,7 +43,7 @@
 ProxyConfigDictionary::~ProxyConfigDictionary() = default;
 
 bool ProxyConfigDictionary::GetMode(ProxyPrefs::ProxyMode* out) const {
-  const base::Value* mode_value = dict_.FindKey(kProxyMode);
+  const base::Value* mode_value = dict_.Find(kProxyMode);
   if (!mode_value || !mode_value->is_string())
     return false;
   std::string mode_str = mode_value->GetString();
@@ -57,7 +55,7 @@
 }
 
 bool ProxyConfigDictionary::GetPacMandatory(bool* out) const {
-  const base::Value* value = dict_.FindKey(kProxyPacMandatory);
+  const base::Value* value = dict_.Find(kProxyPacMandatory);
   if (!value || !value->is_bool()) {
     *out = false;
     return false;
@@ -75,34 +73,35 @@
 }
 
 bool ProxyConfigDictionary::HasBypassList() const {
-  return dict_.FindKey(kProxyBypassList);
+  return dict_.Find(kProxyBypassList);
 }
 
-const base::Value& ProxyConfigDictionary::GetDictionary() const {
+const base::Value::Dict& ProxyConfigDictionary::GetDictionary() const {
   return dict_;
 }
 
 // static
-base::Value ProxyConfigDictionary::CreateDirect() {
+base::Value::Dict ProxyConfigDictionary::CreateDirect() {
   return CreateDictionary(ProxyPrefs::MODE_DIRECT, std::string(), false,
                           std::string(), std::string());
 }
 
 // static
-base::Value ProxyConfigDictionary::CreateAutoDetect() {
+base::Value::Dict ProxyConfigDictionary::CreateAutoDetect() {
   return CreateDictionary(ProxyPrefs::MODE_AUTO_DETECT, std::string(), false,
                           std::string(), std::string());
 }
 
 // static
-base::Value ProxyConfigDictionary::CreatePacScript(const std::string& pac_url,
-                                                   bool pac_mandatory) {
+base::Value::Dict ProxyConfigDictionary::CreatePacScript(
+    const std::string& pac_url,
+    bool pac_mandatory) {
   return CreateDictionary(ProxyPrefs::MODE_PAC_SCRIPT, pac_url, pac_mandatory,
                           std::string(), std::string());
 }
 
 // static
-base::Value ProxyConfigDictionary::CreateFixedServers(
+base::Value::Dict ProxyConfigDictionary::CreateFixedServers(
     const std::string& proxy_server,
     const std::string& bypass_list) {
   if (!proxy_server.empty()) {
@@ -114,28 +113,28 @@
 }
 
 // static
-base::Value ProxyConfigDictionary::CreateSystem() {
+base::Value::Dict ProxyConfigDictionary::CreateSystem() {
   return CreateDictionary(ProxyPrefs::MODE_SYSTEM, std::string(), false,
                           std::string(), std::string());
 }
 
 // static
-base::Value ProxyConfigDictionary::CreateDictionary(
+base::Value::Dict ProxyConfigDictionary::CreateDictionary(
     ProxyPrefs::ProxyMode mode,
     const std::string& pac_url,
     bool pac_mandatory,
     const std::string& proxy_server,
     const std::string& bypass_list) {
-  base::Value dict(base::Value::Type::DICTIONARY);
-  dict.SetKey(kProxyMode, base::Value(ProxyModeToString(mode)));
+  base::Value::Dict dict;
+  dict.Set(kProxyMode, base::Value(ProxyModeToString(mode)));
   if (!pac_url.empty()) {
-    dict.SetKey(kProxyPacUrl, base::Value(pac_url));
-    dict.SetKey(kProxyPacMandatory, base::Value(pac_mandatory));
+    dict.Set(kProxyPacUrl, base::Value(pac_url));
+    dict.Set(kProxyPacMandatory, base::Value(pac_mandatory));
   }
   if (!proxy_server.empty())
-    dict.SetKey(kProxyServer, base::Value(proxy_server));
+    dict.Set(kProxyServer, base::Value(proxy_server));
   if (!bypass_list.empty())
-    dict.SetKey(kProxyBypassList, base::Value(bypass_list));
+    dict.Set(kProxyBypassList, base::Value(bypass_list));
   return dict;
 }
 
@@ -158,7 +157,7 @@
 }
 
 bool ProxyConfigDictionary::GetString(const char* key, std::string* out) const {
-  const base::Value* value = dict_.FindKey(key);
+  const base::Value* value = dict_.Find(key);
   if (!value || !value->is_string()) {
     *out = "";
     return false;
diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/proxy_config/proxy_config_dictionary.h
index 79243c3..6f65a50 100644
--- a/components/proxy_config/proxy_config_dictionary.h
+++ b/components/proxy_config/proxy_config_dictionary.h
@@ -28,7 +28,7 @@
 class PROXY_CONFIG_EXPORT ProxyConfigDictionary {
  public:
   // Takes ownership of |dict| (|dict| will be moved to |dict_|).
-  explicit ProxyConfigDictionary(base::Value dict);
+  explicit ProxyConfigDictionary(base::Value::Dict dict);
   ProxyConfigDictionary(ProxyConfigDictionary&& other);
 
   ProxyConfigDictionary(const ProxyConfigDictionary&) = delete;
@@ -43,15 +43,15 @@
   bool GetBypassList(std::string* out) const;
   bool HasBypassList() const;
 
-  const base::Value& GetDictionary() const;
+  const base::Value::Dict& GetDictionary() const;
 
-  static base::Value CreateDirect();
-  static base::Value CreateAutoDetect();
-  static base::Value CreatePacScript(const std::string& pac_url,
-                                     bool pac_mandatory);
-  static base::Value CreateFixedServers(const std::string& proxy_server,
-                                        const std::string& bypass_list);
-  static base::Value CreateSystem();
+  static base::Value::Dict CreateDirect();
+  static base::Value::Dict CreateAutoDetect();
+  static base::Value::Dict CreatePacScript(const std::string& pac_url,
+                                           bool pac_mandatory);
+  static base::Value::Dict CreateFixedServers(const std::string& proxy_server,
+                                              const std::string& bypass_list);
+  static base::Value::Dict CreateSystem();
 
   // Encodes the proxy server as "<url-scheme>=<proxy-scheme>://<proxy>".
   // Used to generate the |proxy_server| arg for CreateFixedServers().
@@ -62,13 +62,13 @@
  private:
   bool GetString(const char* key, std::string* out) const;
 
-  static base::Value CreateDictionary(ProxyPrefs::ProxyMode mode,
-                                      const std::string& pac_url,
-                                      bool pac_mandatory,
-                                      const std::string& proxy_server,
-                                      const std::string& bypass_list);
+  static base::Value::Dict CreateDictionary(ProxyPrefs::ProxyMode mode,
+                                            const std::string& pac_url,
+                                            bool pac_mandatory,
+                                            const std::string& proxy_server,
+                                            const std::string& bypass_list);
 
-  base::Value dict_;
+  base::Value::Dict dict_;
 };
 
 #endif  // COMPONENTS_PROXY_CONFIG_PROXY_CONFIG_DICTIONARY_H_
diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_config/proxy_policy_handler.cc
index f7d23a5..0aeff68 100644
--- a/components/proxy_config/proxy_policy_handler.cc
+++ b/components/proxy_config/proxy_policy_handler.cc
@@ -236,22 +236,23 @@
     return;
   }
 
+  auto set_proxy_pref_value = [&prefs](base::Value::Dict dict) {
+    prefs->SetValue(proxy_config::prefs::kProxy, base::Value(std::move(dict)));
+  };
+
   switch (proxy_mode) {
     case ProxyPrefs::MODE_DIRECT:
-      prefs->SetValue(proxy_config::prefs::kProxy,
-                      ProxyConfigDictionary::CreateDirect());
+      set_proxy_pref_value(ProxyConfigDictionary::CreateDirect());
       break;
     case ProxyPrefs::MODE_AUTO_DETECT:
-      prefs->SetValue(proxy_config::prefs::kProxy,
-                      ProxyConfigDictionary::CreateAutoDetect());
+      set_proxy_pref_value(ProxyConfigDictionary::CreateAutoDetect());
       break;
     case ProxyPrefs::MODE_PAC_SCRIPT: {
       if (pac_url && pac_url->is_string()) {
         bool mandatory =
             pac_mandatory && pac_mandatory->GetIfBool().value_or(false);
-        prefs->SetValue(proxy_config::prefs::kProxy,
-                        ProxyConfigDictionary::CreatePacScript(
-                            pac_url->GetString(), mandatory));
+        set_proxy_pref_value(ProxyConfigDictionary::CreatePacScript(
+            pac_url->GetString(), mandatory));
       } else {
         NOTREACHED();
       }
@@ -259,18 +260,15 @@
     }
     case ProxyPrefs::MODE_FIXED_SERVERS: {
       if (server->is_string()) {
-        prefs->SetValue(
-            proxy_config::prefs::kProxy,
-            ProxyConfigDictionary::CreateFixedServers(
-                server->GetString(), bypass_list && bypass_list->is_string()
-                                         ? bypass_list->GetString()
-                                         : std::string()));
+        set_proxy_pref_value(ProxyConfigDictionary::CreateFixedServers(
+            server->GetString(), bypass_list && bypass_list->is_string()
+                                     ? bypass_list->GetString()
+                                     : std::string()));
       }
       break;
     }
     case ProxyPrefs::MODE_SYSTEM:
-      prefs->SetValue(proxy_config::prefs::kProxy,
-                      ProxyConfigDictionary::CreateSystem());
+      set_proxy_pref_value(ProxyConfigDictionary::CreateSystem());
       break;
     case ProxyPrefs::kModeCount:
       NOTREACHED();
diff --git a/components/proxy_config/proxy_policy_handler_unittest.cc b/components/proxy_config/proxy_policy_handler_unittest.cc
index 80562fd..882903c 100644
--- a/components/proxy_config/proxy_policy_handler_unittest.cc
+++ b/components/proxy_config/proxy_policy_handler_unittest.cc
@@ -65,7 +65,7 @@
     const base::Value* value = nullptr;
     ASSERT_TRUE(store_->GetValue(proxy_config::prefs::kProxy, &value));
     ASSERT_TRUE(value->is_dict());
-    ProxyConfigDictionary dict(value->Clone());
+    ProxyConfigDictionary dict(value->GetDict().Clone());
     std::string s;
     bool b;
     if (expected_proxy_server.empty()) {
diff --git a/components/services/print_compositor/public/mojom/print_compositor.mojom b/components/services/print_compositor/public/mojom/print_compositor.mojom
index 24f85945..fa8f7887 100644
--- a/components/services/print_compositor/public/mojom/print_compositor.mojom
+++ b/components/services/print_compositor/public/mojom/print_compositor.mojom
@@ -15,8 +15,6 @@
 [ServiceSandbox=sandbox.mojom.Sandbox.kPrintCompositor]
 interface PrintCompositor {
   // The status of composition and conversion execution.
-  // These values are persisted to logs. Entries should not be renumbered and
-  // numeric values should never be reused.
   enum Status {
     kSuccess = 0,
     kHandleMapError = 1,
diff --git a/components/services/screen_ai/proto/proto_convertor.cc b/components/services/screen_ai/proto/proto_convertor.cc
index a99c5791..e29a5b38 100644
--- a/components/services/screen_ai/proto/proto_convertor.cc
+++ b/components/services/screen_ai/proto/proto_convertor.cc
@@ -223,7 +223,7 @@
     inner_text += " ";
     ++word_length;
   }
-  inline_text_box.SetName(inner_text);
+  inline_text_box.SetNameChecked(inner_text);
 
   std::vector<int32_t> word_starts = inline_text_box.GetIntListAttribute(
       ax::mojom::IntListAttribute::kWordStarts);
@@ -370,7 +370,7 @@
   SerializeBoundingBox(line_box.bounding_box(), parent_node.id, line_box_node);
   // `ax::mojom::NameFrom` should be set to the correct value based on the
   // role.
-  line_box_node.SetName(line_box.utf8_string());
+  line_box_node.SetNameChecked(line_box.utf8_string());
   if (!line_box.language().empty()) {
     // TODO(nektar): Only set language if different from parent node (i.e. the
     // page node), in order to minimize memory usage.
diff --git a/components/sync/trusted_vault/standalone_trusted_vault_backend.cc b/components/sync/trusted_vault/standalone_trusted_vault_backend.cc
index 99e45e9b..681d7e12 100644
--- a/components/sync/trusted_vault/standalone_trusted_vault_backend.cc
+++ b/components/sync/trusted_vault/standalone_trusted_vault_backend.cc
@@ -391,8 +391,8 @@
 
     // A persistent auth error could have just been resolved.
     if (had_persistent_auth_error_before && !has_persistent_auth_error) {
-      // TODO(crbug.com/1368591): Pending recovery methods may need to be
-      // processed here.
+      MaybeProcessPendingTrustedRecoveryMethod();
+      MaybeRegisterDevice();
 
       // |degraded_recoverability_handler_| is null unless
       // |kSyncTrustedVaultPeriodicDegradedRecoverabilityPolling| is set.
@@ -413,7 +413,6 @@
   RemoveNonPrimaryAccountKeysIfMarkedForDeletion();
 
   if (!primary_account_.has_value()) {
-    DCHECK(!pending_trusted_recovery_method_.has_value());
     return;
   }
 
@@ -549,7 +548,7 @@
     return;
   }
 
-  if (!primary_account_.has_value()) {
+  if (!primary_account_.has_value() || has_persistent_auth_error_) {
     // Defer until SetPrimaryAccount() gets called.
     pending_trusted_recovery_method_ = PendingTrustedRecoveryMethod();
     pending_trusted_recovery_method_->gaia_id = gaia_id;
@@ -771,9 +770,9 @@
 }
 
 void StandaloneTrustedVaultBackend::MaybeProcessPendingTrustedRecoveryMethod() {
-  DCHECK(primary_account_.has_value());
-
-  if (!pending_trusted_recovery_method_.has_value()) {
+  if (!primary_account_.has_value() || has_persistent_auth_error_ ||
+      !pending_trusted_recovery_method_.has_value() ||
+      pending_trusted_recovery_method_->gaia_id != primary_account_->gaia) {
     return;
   }
 
@@ -784,6 +783,8 @@
   AddTrustedRecoveryMethod(recovery_method.gaia_id, recovery_method.public_key,
                            recovery_method.method_type_hint,
                            std::move(recovery_method.completion_callback));
+
+  DCHECK(!pending_trusted_recovery_method_.has_value());
 }
 
 void StandaloneTrustedVaultBackend::OnDeviceRegistered(
diff --git a/components/sync/trusted_vault/standalone_trusted_vault_backend_unittest.cc b/components/sync/trusted_vault/standalone_trusted_vault_backend_unittest.cc
index 80100b3..0373f6b0 100644
--- a/components/sync/trusted_vault/standalone_trusted_vault_backend_unittest.cc
+++ b/components/sync/trusted_vault/standalone_trusted_vault_backend_unittest.cc
@@ -770,6 +770,24 @@
       TrustedVaultDeviceRegistrationStateForUMA::
           kAttemptingRegistrationWithPersistentAuthError,
       /*expected_bucket_count=*/1);
+
+  Mock::VerifyAndClearExpectations(connection());
+
+  // When the auth error is resolved, the registration should be retried.
+  EXPECT_CALL(*connection(),
+              RegisterAuthenticationFactor(
+                  Eq(account_info), ElementsAre(kVaultKey), kLastKeyVersion, _,
+                  AuthenticationFactorType::kPhysicalDevice,
+                  /*authentication_factor_type_hint=*/Eq(absl::nullopt), _));
+
+  base::HistogramTester histogram_tester2;
+  backend()->SetPrimaryAccount(account_info,
+                               /*has_persistent_auth_error=*/false);
+
+  // The second attempt should NOT have logged the histogram, following the
+  // histogram's definition that it should be logged once.
+  histogram_tester2.ExpectTotalCount("Sync.TrustedVaultDeviceRegistrationState",
+                                     /*count=*/0);
 }
 
 TEST_F(StandaloneTrustedVaultBackendTest,
@@ -1552,6 +1570,67 @@
       .Run(TrustedVaultRegistrationStatus::kSuccess);
 }
 
+TEST_F(StandaloneTrustedVaultBackendTest,
+       ShouldDeferTrustedRecoveryMethodUntilPersistentAuthErrorFixed) {
+  const std::vector<std::vector<uint8_t>> kVaultKeys = {{1, 2, 3}};
+  const int kLastKeyVersion = 1;
+  const std::vector<uint8_t> kPublicKey =
+      SecureBoxKeyPair::GenerateRandom()->public_key().ExportToBytes();
+  const CoreAccountInfo account_info = MakeAccountInfoWithGaiaId("user");
+  const int kMethodTypeHint = 7;
+
+  // Mimic device previously registered with some keys.
+  StoreKeysAndMimicDeviceRegistration(kVaultKeys, kLastKeyVersion,
+                                      account_info);
+
+  // Mimic entering a persistent auth error.
+  backend()->SetPrimaryAccount(account_info,
+                               /*has_persistent_auth_error=*/true);
+
+  // No request should be issued while there is a persistent auth error.
+  base::MockCallback<base::OnceClosure> completion_callback;
+  EXPECT_CALL(*connection(), RegisterAuthenticationFactor).Times(0);
+  backend()->AddTrustedRecoveryMethod(account_info.gaia, kPublicKey,
+                                      kMethodTypeHint,
+                                      completion_callback.Get());
+
+  EXPECT_TRUE(backend()->HasPendingTrustedRecoveryMethodForTesting());
+
+  // Upon resolving the auth error, the request should be issued.
+  TrustedVaultConnection::RegisterAuthenticationFactorCallback
+      registration_callback;
+  EXPECT_CALL(
+      *connection(),
+      RegisterAuthenticationFactor(
+          Eq(account_info), Eq(kVaultKeys), kLastKeyVersion,
+          PublicKeyWhenExportedEq(kPublicKey),
+          AuthenticationFactorType::kUnspecified, Eq(kMethodTypeHint), _))
+      .WillOnce([&](const CoreAccountInfo&,
+                    const std::vector<std::vector<uint8_t>>&, int,
+                    const SecureBoxPublicKey& device_public_key,
+                    AuthenticationFactorType, absl::optional<int>,
+                    TrustedVaultConnection::RegisterAuthenticationFactorCallback
+                        callback) {
+        registration_callback = std::move(callback);
+        // Note: TrustedVaultConnection::Request doesn't support
+        // cancellation, so these tests don't cover the contract that
+        // caller should store Request object until it's completed or need
+        // to be cancelled.
+        return std::make_unique<TrustedVaultConnection::Request>();
+      });
+  backend()->SetPrimaryAccount(account_info,
+                               /*has_persistent_auth_error=*/false);
+
+  // The operation should be in flight.
+  EXPECT_FALSE(backend()->HasPendingTrustedRecoveryMethodForTesting());
+  ASSERT_FALSE(registration_callback.is_null());
+
+  // Mimic successful completion of the request.
+  EXPECT_CALL(completion_callback, Run());
+  std::move(registration_callback)
+      .Run(TrustedVaultRegistrationStatus::kSuccess);
+}
+
 TEST_F(StandaloneTrustedVaultBackendTest, ShouldVerifyRegistration) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitAndEnableFeature(
diff --git a/components/test/data/history/TopSites.v5.sql b/components/test/data/history/TopSites.v5.sql
new file mode 100644
index 0000000..b38a963
--- /dev/null
+++ b/components/test/data/history/TopSites.v5.sql
@@ -0,0 +1,12 @@
+-- components_unittests --gtest_filter=TopSitesDatabaseTest.Version5
+--
+-- .dump of a version 5 "Top Sites" database.
+BEGIN TRANSACTION;
+CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR);
+INSERT INTO "meta" VALUES('version','5');
+INSERT INTO "meta" VALUES('last_compatible_version','5');
+CREATE TABLE top_sites (url TEXT NOT NULL PRIMARY KEY,url_rank INTEGER NOT NULL,title TEXT NOT NULL);
+INSERT INTO "top_sites" VALUES('http://www.google.com/chrome/intl/en/welcome.html',1,'Welcome to Chromium');
+INSERT INTO "top_sites" VALUES('https://chrome.google.com/webstore?hl=en',2,'Chrome Web Store');
+INSERT INTO "top_sites" VALUES('http://www.google.com/',0,'Google');
+COMMIT;
diff --git a/components/translate/core/browser/translate_infobar_delegate_unittest.cc b/components/translate/core/browser/translate_infobar_delegate_unittest.cc
index d1df515b..d612a5fc 100644
--- a/components/translate/core/browser/translate_infobar_delegate_unittest.cc
+++ b/components/translate/core/browser/translate_infobar_delegate_unittest.cc
@@ -21,7 +21,6 @@
 #include "components/translate/core/browser/mock_translate_driver.h"
 #include "components/translate/core/browser/mock_translate_ranker.h"
 #include "components/translate/core/browser/translate_client.h"
-#include "components/translate/core/browser/translate_infobar_delegate.h"
 #include "components/translate/core/browser/translate_manager.h"
 #include "components/translate/core/browser/translate_pref_names.h"
 #include "components/translate/core/browser/translate_prefs.h"
diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
index 7a7e438..827ad4b 100644
--- a/components/translate/core/browser/translate_manager.cc
+++ b/components/translate/core/browser/translate_manager.cc
@@ -324,13 +324,39 @@
   return true;
 }
 
-void TranslateManager::ShowTranslateUI(bool auto_translate,
+void TranslateManager::ShowTranslateUI(const std::string& target_lang,
+                                       bool auto_translate,
                                        bool triggered_from_menu) {
   // If a translation is in progress, do nothing.
   if (language_state_.translation_pending()) {
     return;
   }
+  std::unique_ptr<TranslatePrefs> translate_prefs(
+      translate_client_->GetTranslatePrefs());
+  const std::string source_code = TranslateDownloadManager::GetLanguageCode(
+      language_state_.source_language());
+  bool is_translated = language_state_.IsPageTranslated() &&
+                       target_lang == language_state_.current_language();
 
+  language_state_.SetTranslateEnabled(true);
+  const TranslateStep step = is_translated ? TRANSLATE_STEP_AFTER_TRANSLATE
+                                           : TRANSLATE_STEP_BEFORE_TRANSLATE;
+  // Translate the page if it has not been translated and manual translate
+  // should trigger translation automatically. Otherwise, only show the infobar.
+  if (auto_translate && !is_translated) {
+    TranslatePage(
+        source_code, target_lang, triggered_from_menu,
+        GetActiveTranslateMetricsLogger()->GetNextManualTranslationType(
+            triggered_from_menu));
+    return;
+  }
+  translate_client_->ShowTranslateUI(step, source_code, target_lang,
+                                     TranslateErrors::NONE,
+                                     triggered_from_menu);
+}
+
+void TranslateManager::ShowTranslateUI(bool auto_translate,
+                                       bool triggered_from_menu) {
   std::unique_ptr<TranslatePrefs> translate_prefs(
       translate_client_->GetTranslatePrefs());
   const std::string source_code = TranslateDownloadManager::GetLanguageCode(
@@ -338,24 +364,7 @@
   const std::string target_lang = GetManualTargetLanguage(
       source_code, language_state_, translate_prefs.get(), language_model_);
 
-  language_state_.SetTranslateEnabled(true);
-
-  const TranslateStep step = language_state_.IsPageTranslated()
-                                 ? TRANSLATE_STEP_AFTER_TRANSLATE
-                                 : TRANSLATE_STEP_BEFORE_TRANSLATE;
-  // Translate the page if it has not been translated and manual translate
-  // should trigger translation automatically. Otherwise, only show the infobar.
-  if (auto_translate && !language_state_.IsPageTranslated()) {
-    TranslatePage(
-        source_code, target_lang, triggered_from_menu,
-        GetActiveTranslateMetricsLogger()->GetNextManualTranslationType(
-            triggered_from_menu));
-    return;
-  }
-
-  translate_client_->ShowTranslateUI(step, source_code, target_lang,
-                                     TranslateErrors::NONE,
-                                     triggered_from_menu);
+  ShowTranslateUI(target_lang, auto_translate, triggered_from_menu);
 }
 
 void TranslateManager::TranslatePage(const std::string& original_source_lang,
diff --git a/components/translate/core/browser/translate_manager.h b/components/translate/core/browser/translate_manager.h
index 320c7c0..4b8e3e2 100644
--- a/components/translate/core/browser/translate_manager.h
+++ b/components/translate/core/browser/translate_manager.h
@@ -135,6 +135,13 @@
   void ShowTranslateUI(bool auto_translate = false,
                        bool triggered_from_menu = false);
 
+  // Show the translation UI with the target language enforced to |target_lang|.
+  // If |auto_translate| is true the page gets translated to the target
+  // language.
+  void ShowTranslateUI(const std::string& target_lang,
+                       bool auto_translate = false,
+                       bool triggered_from_menu = false);
+
   // Returns true iff the current page could be manually translated.
   // Logging should only be performed when this method is called to show the
   // translate menu item.
diff --git a/components/translate/core/browser/translate_manager_unittest.cc b/components/translate/core/browser/translate_manager_unittest.cc
index 3b587c3..9f24c92 100644
--- a/components/translate/core/browser/translate_manager_unittest.cc
+++ b/components/translate/core/browser/translate_manager_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/containers/contains.h"
 #include "base/json/json_reader.h"
 #include "base/memory/raw_ptr.h"
+#include "base/metrics/metrics_hashes.h"
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
@@ -52,6 +53,8 @@
 const char kInitiationStatusName[] = "Translate.InitiationStatus.v2";
 const char kMenuTranslationIsAvailableName[] =
     "Translate.MenuTranslation.IsAvailable";
+const char kTranslateSourceLanguageName[] = "Translate.SourceLanguage";
+const char kTranslateTargetLanguageName[] = "Translate.TargetLanguage";
 
 // Overrides NetworkChangeNotifier, simulating connection type changes
 // for tests.
@@ -1427,7 +1430,7 @@
   // update the TranslateManager after a translation is performed.
 }
 
-TEST_F(TranslateManagerTest, ShowTranslateUI) {
+TEST_F(TranslateManagerTest, ShowTranslateUI_NoTranslation) {
   manager_->set_application_locale("en");
   mock_language_model_.details = {
       MockLanguageModel::LanguageDetails("de", 1.0),
@@ -1457,6 +1460,115 @@
   histogram_tester.ExpectTotalCount(kInitiationStatusName, 0);
 }
 
+TEST_F(TranslateManagerTest, ShowTranslateUI_Translation) {
+  manager_->set_application_locale("en");
+  mock_language_model_.details = {
+      MockLanguageModel::LanguageDetails("de", 1.0),
+  };
+  language::AcceptLanguagesService accept_languages(&prefs_,
+                                                    accept_languages_prefs);
+  ON_CALL(mock_translate_client_, IsTranslatableURL(GURL::EmptyGURL()))
+      .WillByDefault(Return(true));
+  ON_CALL(mock_translate_client_, GetAcceptLanguagesService())
+      .WillByDefault(Return(&accept_languages));
+  EXPECT_CALL(
+      mock_translate_client_,
+      ShowTranslateUI(translate::TRANSLATE_STEP_TRANSLATING, "en", "de",
+                      TranslateErrors::NONE, false /* triggered_from_menu */))
+      .WillOnce(Return(true));
+  translate_manager_ = std::make_unique<TranslateManager>(
+      &mock_translate_client_, &mock_translate_ranker_, &mock_language_model_);
+
+  base::HistogramTester histogram_tester;
+  prefs_.SetBoolean(prefs::kOfferTranslateEnabled, true);
+  translate_manager_->GetLanguageState()->LanguageDetermined("en", true);
+  network_notifier_.SimulateOnline();
+
+  translate_manager_->ShowTranslateUI(/* auto_translate= */ true);
+
+  // TranslateManager::ShowTranslateUI should call translation.
+  histogram_tester.ExpectTotalCount(kTranslateSourceLanguageName, 1);
+  histogram_tester.ExpectBucketCount(kTranslateSourceLanguageName,
+                                     base::HashMetricName("en"), 1);
+  histogram_tester.ExpectTotalCount(kTranslateTargetLanguageName, 1);
+  histogram_tester.ExpectBucketCount(kTranslateTargetLanguageName,
+                                     base::HashMetricName("de"), 1);
+}
+
+TEST_F(TranslateManagerTest,
+       ShowTranslateUI_ExplicitTargetLanguageTranslation) {
+  manager_->set_application_locale("en");
+  mock_language_model_.details = {
+      MockLanguageModel::LanguageDetails("de", 1.0),
+  };
+  ON_CALL(mock_translate_client_, IsTranslatableURL(GURL::EmptyGURL()))
+      .WillByDefault(Return(true));
+  language::AcceptLanguagesService accept_languages(&prefs_,
+                                                    accept_languages_prefs);
+  ON_CALL(mock_translate_client_, GetAcceptLanguagesService())
+      .WillByDefault(Return(&accept_languages));
+  EXPECT_CALL(
+      mock_translate_client_,
+      ShowTranslateUI(translate::TRANSLATE_STEP_TRANSLATING, "en", "pl",
+                      TranslateErrors::NONE, false /* triggered_from_menu */))
+      .WillOnce(Return(true));
+
+  translate_manager_ = std::make_unique<TranslateManager>(
+      &mock_translate_client_, &mock_translate_ranker_, &mock_language_model_);
+
+  base::HistogramTester histogram_tester;
+  prefs_.SetBoolean(prefs::kOfferTranslateEnabled, true);
+  translate_manager_->GetLanguageState()->LanguageDetermined("en", true);
+  network_notifier_.SimulateOnline();
+
+  translate_manager_->ShowTranslateUI("pl", /* auto_translate */ true,
+                                      /* triggered_from_menu= */ false);
+
+  // TranslateManager::ShowTranslateUI should call translation for the
+  // explicit target language.
+  histogram_tester.ExpectTotalCount(kTranslateSourceLanguageName, 1);
+  histogram_tester.ExpectBucketCount(kTranslateSourceLanguageName,
+                                     base::HashMetricName("en"), 1);
+  histogram_tester.ExpectTotalCount(kTranslateTargetLanguageName, 1);
+  histogram_tester.ExpectBucketCount(kTranslateTargetLanguageName,
+                                     base::HashMetricName("pl"), 1);
+}
+
+TEST_F(TranslateManagerTest, ShowTranslateUI_ExplicitTargetSameAsTarget) {
+  manager_->set_application_locale("en");
+  mock_language_model_.details = {
+      MockLanguageModel::LanguageDetails("pl", 1.0),
+  };
+  ON_CALL(mock_translate_client_, IsTranslatableURL(GURL::EmptyGURL()))
+      .WillByDefault(Return(true));
+  language::AcceptLanguagesService accept_languages(&prefs_,
+                                                    accept_languages_prefs);
+  ON_CALL(mock_translate_client_, GetAcceptLanguagesService())
+      .WillByDefault(Return(&accept_languages));
+  EXPECT_CALL(mock_translate_client_,
+              ShowTranslateUI(_, _, _, _, false /* triggered_from_menu */))
+      .WillOnce(Return(true));
+
+  translate_manager_ = std::make_unique<TranslateManager>(
+      &mock_translate_client_, &mock_translate_ranker_, &mock_language_model_);
+
+  base::HistogramTester histogram_tester;
+  prefs_.SetBoolean(prefs::kOfferTranslateEnabled, true);
+  translate_manager_->GetLanguageState()->LanguageDetermined("de", true);
+  network_notifier_.SimulateOnline();
+
+  translate_manager_->ShowTranslateUI("pl", /* auto_translate */ true,
+                                      /* triggered_from_menu= */ false);
+
+  // TranslateManager::ShowTranslateUI should call translation.
+  histogram_tester.ExpectTotalCount(kTranslateSourceLanguageName, 1);
+  histogram_tester.ExpectBucketCount(kTranslateSourceLanguageName,
+                                     base::HashMetricName("de"), 1);
+  histogram_tester.ExpectTotalCount(kTranslateTargetLanguageName, 1);
+  histogram_tester.ExpectBucketCount(kTranslateTargetLanguageName,
+                                     base::HashMetricName("pl"), 1);
+}
+
 TEST_F(TranslateManagerTest, GetActiveTranslateMetricsLogger) {
   PrepareTranslateManager();
   std::unique_ptr<TranslateMetricsLogger> translate_metrics_logger_a =
diff --git a/components/translate/core/browser/translate_ui_delegate_unittest.cc b/components/translate/core/browser/translate_ui_delegate_unittest.cc
index 7ce40d7..38d5270c 100644
--- a/components/translate/core/browser/translate_ui_delegate_unittest.cc
+++ b/components/translate/core/browser/translate_ui_delegate_unittest.cc
@@ -10,7 +10,6 @@
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
-#include "components/language/core/browser/language_prefs.h"
 
 #include "components/infobars/core/infobar.h"
 #include "components/language/core/browser/language_model.h"
diff --git a/components/ukm/ukm_service_unittest.cc b/components/ukm/ukm_service_unittest.cc
index c432858..8ca8072 100644
--- a/components/ukm/ukm_service_unittest.cc
+++ b/components/ukm/ukm_service_unittest.cc
@@ -34,7 +34,6 @@
 #include "components/ukm/ukm_entry_filter.h"
 #include "components/ukm/ukm_pref_names.h"
 #include "components/ukm/ukm_recorder_impl.h"
-#include "components/ukm/ukm_service.h"
 #include "components/ukm/unsent_log_store_metrics_impl.h"
 #include "services/metrics/public/cpp/ukm_builders.h"
 #include "services/metrics/public/cpp/ukm_entry_builder.h"
diff --git a/components/user_education/common/feature_promo_snooze_service_unittest.cc b/components/user_education/common/feature_promo_snooze_service_unittest.cc
index 2b464c9..b4197a9 100644
--- a/components/user_education/common/feature_promo_snooze_service_unittest.cc
+++ b/components/user_education/common/feature_promo_snooze_service_unittest.cc
@@ -12,7 +12,6 @@
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
 #include "components/feature_engagement/public/feature_constants.h"
-#include "components/user_education/common/feature_promo_snooze_service.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace user_education {
diff --git a/components/user_notes/browser/user_note_service_unittest.cc b/components/user_notes/browser/user_note_service_unittest.cc
index 108ae5c2..b96dc47 100644
--- a/components/user_notes/browser/user_note_service_unittest.cc
+++ b/components/user_notes/browser/user_note_service_unittest.cc
@@ -13,7 +13,6 @@
 #include "components/user_notes/browser/frame_user_note_changes.h"
 #include "components/user_notes/browser/user_note_base_test.h"
 #include "components/user_notes/browser/user_note_manager.h"
-#include "components/user_notes/browser/user_note_service.h"
 #include "components/user_notes/interfaces/user_note_service_delegate.h"
 #include "components/user_notes/interfaces/user_notes_ui.h"
 #include "components/user_notes/model/user_note_metadata.h"
diff --git a/components/viz/common/quads/compositor_render_pass_unittest.cc b/components/viz/common/quads/compositor_render_pass_unittest.cc
index aa3af39..685331a 100644
--- a/components/viz/common/quads/compositor_render_pass_unittest.cc
+++ b/components/viz/common/quads/compositor_render_pass_unittest.cc
@@ -61,7 +61,7 @@
   AggregatedRenderPassId render_pass_id{3u};
   gfx::Rect output_rect(45, 22, 120, 13);
   gfx::Transform transform_to_root =
-      gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
+      gfx::Transform::Affine(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
   gfx::Rect damage_rect(56, 123, 19, 43);
   cc::FilterOperations filters;
   filters.Append(cc::FilterOperation::CreateOpacityFilter(0.5));
@@ -123,7 +123,7 @@
   CompositorRenderPassId id{3};
   gfx::Rect output_rect(45, 22, 120, 13);
   gfx::Transform transform_to_root =
-      gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
+      gfx::Transform::Affine(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
   gfx::Rect damage_rect(56, 123, 19, 43);
   cc::FilterOperations filters;
   filters.Append(cc::FilterOperation::CreateOpacityFilter(0.5));
@@ -181,7 +181,7 @@
   CompositorRenderPassId contrib_id{4};
   gfx::Rect contrib_output_rect(10, 15, 12, 17);
   gfx::Transform contrib_transform_to_root =
-      gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
+      gfx::Transform::Affine(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
   gfx::Rect contrib_damage_rect(11, 16, 10, 15);
   cc::FilterOperations contrib_filters;
   contrib_filters.Append(cc::FilterOperation::CreateSepiaFilter(0.5));
@@ -239,7 +239,7 @@
   CompositorRenderPassId id{3};
   gfx::Rect output_rect(45, 22, 120, 13);
   gfx::Transform transform_to_root =
-      gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
+      gfx::Transform::Affine(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
   gfx::Rect damage_rect(56, 123, 19, 43);
   cc::FilterOperations filters;
   filters.Append(cc::FilterOperation::CreateOpacityFilter(0.5));
diff --git a/components/viz/common/quads/draw_quad_perftest.cc b/components/viz/common/quads/draw_quad_perftest.cc
index 8a83f70..5f468ee 100644
--- a/components/viz/common/quads/draw_quad_perftest.cc
+++ b/components/viz/common/quads/draw_quad_perftest.cc
@@ -36,7 +36,8 @@
 }
 
 SharedQuadState* CreateSharedQuadState(CompositorRenderPass* render_pass) {
-  gfx::Transform quad_transform = gfx::Transform(1.0, 0.0, 0.5, 1.0, 0.5, 0.0);
+  gfx::Transform quad_transform =
+      gfx::Transform::Affine(1.0, 0.0, 0.5, 1.0, 0.5, 0.0);
   gfx::Rect content_rect(26, 28);
   gfx::Rect visible_layer_rect(10, 12, 14, 16);
   bool are_contents_opaque = false;
diff --git a/components/viz/common/quads/draw_quad_unittest.cc b/components/viz/common/quads/draw_quad_unittest.cc
index b01e226..cabbdd5 100644
--- a/components/viz/common/quads/draw_quad_unittest.cc
+++ b/components/viz/common/quads/draw_quad_unittest.cc
@@ -47,7 +47,8 @@
 }
 
 TEST(DrawQuadTest, CopySharedQuadState) {
-  gfx::Transform quad_transform = gfx::Transform(1.0, 0.0, 0.5, 1.0, 0.5, 0.0);
+  gfx::Transform quad_transform =
+      gfx::Transform::Affine(1.0, 0.0, 0.5, 1.0, 0.5, 0.0);
   gfx::Rect layer_rect(26, 28);
   gfx::Rect visible_layer_rect(10, 12, 14, 16);
   gfx::Rect clip_rect(19, 21, 23, 25);
@@ -71,7 +72,8 @@
 }
 
 SharedQuadState* CreateSharedQuadState(CompositorRenderPass* render_pass) {
-  gfx::Transform quad_transform = gfx::Transform(1.0, 0.0, 0.5, 1.0, 0.5, 0.0);
+  gfx::Transform quad_transform =
+      gfx::Transform::Affine(1.0, 0.0, 0.5, 1.0, 0.5, 0.0);
   gfx::Rect layer_rect(26, 28);
   gfx::Rect visible_layer_rect(10, 12, 14, 16);
   bool are_contents_opaque = true;
diff --git a/components/viz/service/compositor_frame_fuzzer/fuzzer_browser_process.cc b/components/viz/service/compositor_frame_fuzzer/fuzzer_browser_process.cc
index 8b824eff3..e41e36f 100644
--- a/components/viz/service/compositor_frame_fuzzer/fuzzer_browser_process.cc
+++ b/components/viz/service/compositor_frame_fuzzer/fuzzer_browser_process.cc
@@ -131,7 +131,7 @@
                gfx::Rect(kBrowserSize), gfx::Transform());
 
   auto* renderer_sqs = pass->CreateAndAppendSharedQuadState();
-  renderer_sqs->SetAll(gfx::Transform(1.0, 0.0, 0.0, 1.0, 0, 80),
+  renderer_sqs->SetAll(gfx::Transform::MakeTranslation(0, 80),
                        gfx::Rect(kRendererFrameSize),
                        gfx::Rect(kRendererFrameSize),
                        /*mask_filter_info=*/gfx::MaskFilterInfo(),
diff --git a/components/viz/service/display/display_unittest.cc b/components/viz/service/display/display_unittest.cc
index 639894b..b10314d 100644
--- a/components/viz/service/display/display_unittest.cc
+++ b/components/viz/service/display/display_unittest.cc
@@ -3296,10 +3296,10 @@
   gfx::Rect rect3(0, 0, 10, 10);
 
   gfx::Transform invertible;
-  gfx::Transform non_invertible(10, 10, 0, 0,  // row 1
-                                10, 10, 0, 0,  // row 2
-                                0, 0, 1, 0,    // row 3
-                                0, 0, 0, 1);   // row 4
+  auto non_invertible = gfx::Transform::RowMajor(10, 10, 0, 0,  // row 1
+                                                 10, 10, 0, 0,  // row 2
+                                                 0, 0, 1, 0,    // row 3
+                                                 0, 0, 0, 1);   // row 4
   gfx::Transform non_invertible_miss_z;
   non_invertible_miss_z.Scale3d(1, 1, 0);
   bool opaque_content = true;
diff --git a/components/viz/service/display/draw_polygon_unittest.cc b/components/viz/service/display/draw_polygon_unittest.cc
index 4a4f955..9c32973 100644
--- a/components/viz/service/display/draw_polygon_unittest.cc
+++ b/components/viz/service/display/draw_polygon_unittest.cc
@@ -175,7 +175,7 @@
 TEST(DrawPolygonConstructionTest, SimpleNormal) {
   gfx::RectF src(-0.1f, -10.0f, 0.2f, 20.0f);
 
-  gfx::Transform transform_i(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
+  gfx::Transform transform_i;
   DrawPolygon polygon_i(nullptr, src, transform_i, 1);
 
   EXPECT_NORMAL(polygon_i, 0.0f, 0.0f, 1.0f);
@@ -184,7 +184,8 @@
 TEST(DrawPolygonConstructionTest, DISABLED_NormalInvertXY) {
   gfx::RectF src(-0.1f, -10.0f, 0.2f, 20.0f);
 
-  gfx::Transform transform(0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
+  auto transform =
+      gfx::Transform::RowMajor(0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
   DrawPolygon polygon_a(nullptr, src, transform, 2);
 
   EXPECT_NORMAL(polygon_a, 0.0f, 0.0f, 1.0f);
@@ -193,7 +194,8 @@
 TEST(DrawPolygonConstructionTest, DISABLED_NormalInvertXZ) {
   gfx::RectF src(-0.1f, -10.0f, 0.2f, 20.0f);
 
-  gfx::Transform transform(0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1);
+  auto transform =
+      gfx::Transform::RowMajor(0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1);
   DrawPolygon polygon_b(nullptr, src, transform, 3);
 
   EXPECT_NORMAL(polygon_b, 1.0f, 0.0f, 0.0f);
@@ -202,7 +204,8 @@
 TEST(DrawPolygonConstructionTest, DISABLED_NormalInvertYZ) {
   gfx::RectF src(-0.1f, -10.0f, 0.2f, 20.0f);
 
-  gfx::Transform transform(1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1);
+  auto transform =
+      gfx::Transform::RowMajor(1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1);
   DrawPolygon polygon_c(nullptr, src, transform, 4);
 
   EXPECT_NORMAL(polygon_c, 0.0f, 1.0f, 0.0f);
@@ -211,7 +214,8 @@
 TEST(DrawPolygonConstructionTest, NormalRotate90) {
   gfx::RectF src(-0.1f, -10.0f, 0.2f, 20.0f);
 
-  gfx::Transform transform(0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1);
+  auto transform =
+      gfx::Transform::RowMajor(0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1);
   DrawPolygon polygon_b(nullptr, src, transform, 3);
 
   EXPECT_NORMAL(polygon_b, 0.0f, 0.0f, 1.0f);
@@ -220,7 +224,8 @@
 TEST(DrawPolygonConstructionTest, InvertXNormal) {
   gfx::RectF src(-0.1f, -10.0f, 0.2f, 20.0f);
 
-  gfx::Transform transform(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
+  auto transform =
+      gfx::Transform::RowMajor(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
   DrawPolygon polygon_d(nullptr, src, transform, 5);
 
   EXPECT_NORMAL(polygon_d, 0.0f, 0.0f, 1.0f);
@@ -229,7 +234,8 @@
 TEST(DrawPolygonConstructionTest, InvertYNormal) {
   gfx::RectF src(-0.1f, -10.0f, 0.2f, 20.0f);
 
-  gfx::Transform transform(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
+  auto transform =
+      gfx::Transform::RowMajor(1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
   DrawPolygon polygon_d(nullptr, src, transform, 5);
 
   EXPECT_NORMAL(polygon_d, 0.0f, 0.0f, 1.0f);
@@ -238,7 +244,8 @@
 TEST(DrawPolygonConstructionTest, InvertZNormal) {
   gfx::RectF src(-0.1f, -10.0f, 0.2f, 20.0f);
 
-  gfx::Transform transform(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1);
+  auto transform =
+      gfx::Transform::RowMajor(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1);
   DrawPolygon polygon_d(nullptr, src, transform, 5);
 
   EXPECT_NORMAL(polygon_d, 0.0f, 0.0f, -1.0f);
@@ -651,13 +658,13 @@
 TEST(DrawPolygonSplitTest, SplitNoInfs) {
   // clang-format off
   gfx::RectF rect_a(0, 0, 1140, 418);
-  gfx::Transform transform_a(
+  auto transform_a = gfx::Transform::RowMajor(
       1.39069271, -0.131110176, 0.5, -503.545319,
       1.00984585, -0.273445308, -0.866025388, -828.169128,
       -0.722961724, 0.690888107, 4.23046966e-17, 570.098511,
       0.00144592347, -0.0013817763, -8.46093968e-20, -0.140197217);
   gfx::RectF rect_b(430, 0, 560, 454);
-  gfx::Transform transform_b(
+  auto transform_b = gfx::Transform::RowMajor(
       0.131110176, -0.5, 1.39069271, 952.04541,
       0.273445308, 0.866025388, 1.00984585, 52.3442955,
       -0.690888107, 0, -0.722961724, 429.901398,
diff --git a/components/viz/service/display/overlay_unittest.cc b/components/viz/service/display/overlay_unittest.cc
index eed47e43..fa9010d 100644
--- a/components/viz/service/display/overlay_unittest.cc
+++ b/components/viz/service/display/overlay_unittest.cc
@@ -81,15 +81,15 @@
 const gfx::PointF kUVTopLeft(0.1f, 0.2f);
 const gfx::PointF kUVBottomRight(1.0f, 1.0f);
 const gfx::Transform kNormalTransform =
-    gfx::Transform(0.9f, 0, 0, 0.8f, 0.1f, 0.2f);  // x,y -> x,y.
+    gfx::Transform::Affine(0.9f, 0, 0, 0.8f, 0.1f, 0.2f);  // x,y -> x,y.
 const gfx::Transform kXMirrorTransform =
-    gfx::Transform(-0.9f, 0, 0, 0.8f, 1.0f, 0.2f);  // x,y -> 1-x,y.
+    gfx::Transform::Affine(-0.9f, 0, 0, 0.8f, 1.0f, 0.2f);  // x,y -> 1-x,y.
 const gfx::Transform kYMirrorTransform =
-    gfx::Transform(0.9f, 0, 0, -0.8f, 0.1f, 1.0f);  // x,y -> x,1-y.
+    gfx::Transform::Affine(0.9f, 0, 0, -0.8f, 0.1f, 1.0f);  // x,y -> x,1-y.
 const gfx::Transform kBothMirrorTransform =
-    gfx::Transform(-0.9f, 0, 0, -0.8f, 1.0f, 1.0f);  // x,y -> 1-x,1-y.
+    gfx::Transform::Affine(-0.9f, 0, 0, -0.8f, 1.0f, 1.0f);  // x,y -> 1-x,1-y.
 const gfx::Transform kSwapTransform =
-    gfx::Transform(0, 1, 1, 0, 0, 0);  // x,y -> y,x.
+    gfx::Transform::Affine(0, 1, 1, 0, 0, 0);  // x,y -> y,x.
 const gfx::BufferFormat kDefaultBufferFormat = gfx::BufferFormat::RGBA_8888;
 
 class TimeTicksOverride {
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc
index d99e911..6eb1ead 100644
--- a/components/viz/service/display/renderer_pixeltest.cc
+++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -3143,7 +3143,7 @@
   auto pass = CreateTestRootRenderPass(AggregatedRenderPassId{1}, rect);
 
   gfx::Rect red_rect(0, 0, 180, 500);
-  gfx::Transform red_quad_to_target_transform(
+  auto red_quad_to_target_transform = gfx::Transform::RowMajor(
       1.0f, 2.4520f, 10.6206f, 19.0f, 0.0f, 0.3528f, 5.9737f, 9.5f, 0.0f,
       -0.2250f, -0.9744f, 0.0f, 0.0f, 0.0225f, 0.0974f, 1.0f);
   SharedQuadState* red_shared_state = CreateTestSharedQuadState(
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc
index 22758869..153bc1e 100644
--- a/components/viz/service/display/skia_renderer.cc
+++ b/components/viz/service/display/skia_renderer.cc
@@ -3573,15 +3573,19 @@
   overlay->display_rect = gfx::RectF(filter_bounds);
   quad->shared_quad_state->quad_to_target_transform.TransformRect(
       &overlay->display_rect);
+  // TODO(petermcneeley): This clipping is only correct for translation and
+  // scale. For other transforms we will need to send the rect over as a
+  // separate parameter.
+  auto unclipped_display_rect = overlay->display_rect;
   overlay->display_rect.Intersect(
       gfx::RectF(gfx::SizeF(current_frame()->device_viewport_size)));
-  auto buffer_rect =
-      gfx::RectF(overlay->display_rect.origin(), gfx::SizeF(buffer_size));
-  // Set |uv_rect| to reflect clipping from |buffer_size| to |filter_bounds|.
-  overlay->uv_rect = gfx::RectF{1.f, 1.f};
-  if (buffer_rect != overlay->display_rect) {
+  // Set |uv_rect| to reflect rounding from |filter_bounds| to |buffer_size|.
+  overlay->uv_rect = gfx::RectF{
+      static_cast<float>(filter_bounds.width()) / buffer_size.width(),
+      static_cast<float>(filter_bounds.height()) / buffer_size.height()};
+  if (unclipped_display_rect != overlay->display_rect) {
     overlay->uv_rect = cc::MathUtil::ScaleRectProportional(
-        overlay->uv_rect, buffer_rect, overlay->display_rect);
+        overlay->uv_rect, unclipped_display_rect, overlay->display_rect);
   }
 #endif  // BUILDFLAG(IS_APPLE)
 }
diff --git a/components/viz/service/display/surface_aggregator.cc b/components/viz/service/display/surface_aggregator.cc
index b0e8d78..5c2e883 100644
--- a/components/viz/service/display/surface_aggregator.cc
+++ b/components/viz/service/display/surface_aggregator.cc
@@ -116,8 +116,8 @@
     const gfx::Transform& target_to_root_transform,
     const gfx::Rect& root_damage_rect,
     gfx::Rect* quad_space_damage_rect) {
-  gfx::Transform quad_to_root_transform(target_to_root_transform,
-                                        quad_to_target_transform);
+  gfx::Transform quad_to_root_transform =
+      target_to_root_transform * quad_to_target_transform;
   gfx::Transform inverse_transform(gfx::Transform::kSkipInitialization);
   bool inverse_valid = quad_to_root_transform.GetInverse(&inverse_transform);
   if (!inverse_valid)
@@ -252,7 +252,7 @@
     const gfx::Transform& dest_to_root_target_transform,
     const absl::optional<gfx::Rect>& dest_root_target_clip_rect) {
   gfx::Transform target_to_dest_root_target_transform =
-      gfx::Transform(dest_to_root_target_transform, target_to_dest_transform);
+      dest_to_root_target_transform * target_to_dest_transform;
 
   gfx::Rect rect_in_root_target_space = cc::MathUtil::MapEnclosingClippedRect(
       target_to_dest_root_target_transform, rect_in_target_space);
@@ -713,8 +713,8 @@
 
   const gfx::Rect& surface_quad_visible_rect = surface_quad->visible_rect;
   if (ignore_undamaged) {
-    gfx::Transform quad_to_target_transform(
-        target_transform, surface_quad_sqs->quad_to_target_transform);
+    gfx::Transform quad_to_target_transform =
+        target_transform * surface_quad_sqs->quad_to_target_transform;
     *damage_rect_in_quad_space_valid = CalculateQuadSpaceDamageRect(
         quad_to_target_transform, dest_pass->transform_to_root_target,
         root_damage_rect_, damage_rect_in_quad_space);
@@ -780,7 +780,7 @@
     // prevents the delegated ink trail from flickering if a compositor frame
     // is not generated due to a delayed main frame.
     TransformAndStoreDelegatedInkMetadata(
-        gfx::Transform(dest_pass->transform_to_root_target, combined_transform),
+        dest_pass->transform_to_root_target * combined_transform,
         frame.metadata.delegated_ink_metadata.get());
   }
 
@@ -1378,8 +1378,7 @@
     // prevents the delegated ink trail from flickering if a compositor frame
     // is not generated due to a delayed main frame.
     TransformAndStoreDelegatedInkMetadata(
-        gfx::Transform(source_pass_list.back()->transform_to_root_target,
-                       surface_transform),
+        source_pass_list.back()->transform_to_root_target * surface_transform,
         frame.metadata.delegated_ink_metadata.get());
   }
 
@@ -1412,7 +1411,7 @@
       // we will be adding another render pass for the surface transform, in
       // which this will no longer be the root.
       transform_to_root_target =
-          gfx::Transform(surface_transform, source.transform_to_root_target);
+          surface_transform * source.transform_to_root_target;
     }
 
     copy_pass->SetAll(
@@ -1686,9 +1685,9 @@
 
       resolved_pass.aggregation().embedded_passes.insert(&child_resolved_pass);
 
-      const gfx::Transform child_to_root_transform(
-          target_to_root_transform,
-          quad->shared_quad_state->quad_to_target_transform);
+      const gfx::Transform child_to_root_transform =
+          target_to_root_transform *
+          quad->shared_quad_state->quad_to_target_transform;
       quad_damage_rect =
           PrewalkRenderPass(resolved_frame, child_resolved_pass, gfx::Rect(),
                             child_to_root_transform, &resolved_pass, result);
diff --git a/components/viz/service/display/surface_aggregator_unittest.cc b/components/viz/service/display/surface_aggregator_unittest.cc
index f57d7ed0..982ab92f 100644
--- a/components/viz/service/display/surface_aggregator_unittest.cc
+++ b/components/viz/service/display/surface_aggregator_unittest.cc
@@ -6877,7 +6877,7 @@
   { auto aggregated_frame = AggregateFrame(root_surface_id_); }
 
   // Parameters used for damage rect testing
-  gfx::Transform transform(0.5, 0, 0, 0.5, 20, 0);
+  auto transform = gfx::Transform::Affine(0.5, 0, 0, 0.5, 20, 0);
   gfx::Rect clip_rect = gfx::Rect(30, 30, 40, 40);
 
   // Clipping is off
@@ -7069,7 +7069,7 @@
 
   // Original video quad (0, 0, 100, 100) x this video_transform matrix ==
   // (10, 0, 80, 80).
-  gfx::Transform video_transform(0.8f, 0, 0, 0.8f, 10.0f, 0);
+  auto video_transform = gfx::Transform::Affine(0.8f, 0, 0, 0.8f, 10.0f, 0);
 
   // root surface quads
   std::vector<Quad> root_surface_quads = {
@@ -7434,8 +7434,8 @@
                                        std::move(child_surface_frame));
   }
   gfx::PointF child_surface_offset(10.0f, 5.0f);
-  gfx::Transform child_surface_transform(
-      1.f, 0, 0, 1.f, child_surface_offset.x(), child_surface_offset.y());
+  gfx::Transform child_surface_transform = gfx::Transform::MakeTranslation(
+      child_surface_offset.x(), child_surface_offset.y());
 
   auto apply_transform = [child_surface_offset](const gfx::Rect orig_rect) {
     auto rtn_rect = orig_rect;
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index df82b4e..bf56237 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -2302,8 +2302,11 @@
 
 void SkiaOutputSurfaceImplOnGpu::DestroySharedImage(gpu::Mailbox mailbox) {
   shared_image_factory_->DestroySharedImage(mailbox);
-  // The write access should be destroyed already.
-  DCHECK(!overlay_pass_accesses_.contains(mailbox));
+  // Under normal circumstances the write access should be destroyed already in
+  // PostSubmit(), but if context was lost then SwapBuffersInternal will no-op
+  // and PostSubmit() will not be called.
+  DCHECK(!overlay_pass_accesses_.contains(mailbox) || context_is_lost_);
+  overlay_pass_accesses_.erase(mailbox);
   skia_representations_.erase(mailbox);
   solid_color_images_.erase(mailbox);
 }
diff --git a/content/browser/accessibility/browser_accessibility_fuchsia_unittest.cc b/content/browser/accessibility/browser_accessibility_fuchsia_unittest.cc
index d0115dc..f28c123a 100644
--- a/content/browser/accessibility/browser_accessibility_fuchsia_unittest.cc
+++ b/content/browser/accessibility/browser_accessibility_fuchsia_unittest.cc
@@ -552,10 +552,10 @@
 
   ui::AXNodeData node;
   node.id = kRootId;
-  // gfx::Transform constructor takes arguments in row-major order.
-  node.relative_bounds.transform = std::make_unique<gfx::Transform>(
-      x_scale, 0, 0, x_translation, 0, y_scale, 0, y_translation, 0, 0, z_scale,
-      z_translation, 0, 0, 0, 1);
+  node.relative_bounds.transform =
+      std::make_unique<gfx::Transform>(gfx::Transform::RowMajor(
+          x_scale, 0, 0, x_translation, 0, y_scale, 0, y_translation, 0, 0,
+          z_scale, z_translation, 0, 0, 0, 1));
   node.relative_bounds.bounds = gfx::RectF(
       x_min, y_min, /* width = */ x_max - x_min, /* height = */ y_max - y_min);
 
diff --git a/content/browser/bluetooth/web_bluetooth_service_impl.cc b/content/browser/bluetooth/web_bluetooth_service_impl.cc
index 129aa3c..b26cdf38 100644
--- a/content/browser/bluetooth/web_bluetooth_service_impl.cc
+++ b/content/browser/bluetooth/web_bluetooth_service_impl.cc
@@ -589,9 +589,6 @@
   const url::Origin& embedding_origin =
       render_frame_host().GetMainFrame()->GetLastCommittedOrigin();
 
-  // IsSameOriginWith() no longer excludes opaque origins.
-  // TODO(https://crbug.com/994454): Exclude opaque origins explicitly.
-
   // Some embedders that don't support Web Bluetooth indicate this by not
   // returning a chooser.
   // TODO(https://crbug.com/993829): Perform this check once there is a way to
diff --git a/content/browser/cache_storage/cache_storage_context_impl.h b/content/browser/cache_storage/cache_storage_context_impl.h
index 7b4cf9f..19e6fbf 100644
--- a/content/browser/cache_storage/cache_storage_context_impl.h
+++ b/content/browser/cache_storage/cache_storage_context_impl.h
@@ -88,11 +88,6 @@
     return cache_manager_;
   }
 
-  const scoped_refptr<storage::QuotaManagerProxy> quota_manager_proxy() {
-    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-    return quota_manager_proxy_;
-  }
-
   bool is_incognito() const { return is_incognito_; }
 
  private:
diff --git a/content/browser/cache_storage/cache_storage_manager.cc b/content/browser/cache_storage/cache_storage_manager.cc
index b34d64b..a80e3fc 100644
--- a/content/browser/cache_storage/cache_storage_manager.cc
+++ b/content/browser/cache_storage/cache_storage_manager.cc
@@ -721,7 +721,7 @@
       if (!bucket_locator.is_default)
         continue;
 
-      storage_keys.push_back(key_value.first.first.storage_key);
+      storage_keys.push_back(bucket_locator.storage_key);
     }
 
     scheduler_task_runner_->PostTask(
diff --git a/content/browser/cache_storage/cache_storage_manager.h b/content/browser/cache_storage/cache_storage_manager.h
index 8518984..ccf90de 100644
--- a/content/browser/cache_storage/cache_storage_manager.h
+++ b/content/browser/cache_storage/cache_storage_manager.h
@@ -74,12 +74,9 @@
 
   static bool IsValidQuotaStorageKey(const blink::StorageKey& storage_key);
 
-  // Open the CacheStorage for the given storage_key and owner.  A reference
+  // Open the CacheStorage for the given bucket_locator and owner. A reference
   // counting handle is returned which can be stored and used similar to a weak
   // pointer.
-  CacheStorageHandle OpenCacheStorage(const blink::StorageKey& storage_key,
-                                      storage::mojom::CacheStorageOwner owner);
-
   CacheStorageHandle OpenCacheStorage(
       const storage::BucketLocator& bucket_locator,
       storage::mojom::CacheStorageOwner owner);
diff --git a/content/browser/cache_storage/cache_storage_manager_unittest.cc b/content/browser/cache_storage/cache_storage_manager_unittest.cc
index d87f25b..bef93dd 100644
--- a/content/browser/cache_storage/cache_storage_manager_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_manager_unittest.cc
@@ -264,12 +264,6 @@
       ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
 
     CreateStorageManager();
-
-    // Instantiate these after `quota_manager_proxy_` has been initialized.
-    bucket_locator1_ =
-        GetOrCreateBucket(storage_key1_, storage::kDefaultBucketName);
-    bucket_locator2_ =
-        GetOrCreateBucket(storage_key2_, storage::kDefaultBucketName);
   }
 
   void TearDown() override {
@@ -383,6 +377,13 @@
             mock_quota_manager_.get(),
             base::ThreadTaskRunnerHandle::Get().get());
 
+    // These must be instantiated after `quota_manager_proxy_` has been
+    // initialized.
+    bucket_locator1_ =
+        GetOrCreateBucket(storage_key1_, storage::kDefaultBucketName);
+    bucket_locator2_ =
+        GetOrCreateBucket(storage_key2_, storage::kDefaultBucketName);
+
     cache_manager_ = CacheStorageManager::Create(
         temp_dir_path, base::ThreadTaskRunnerHandle::Get(),
         base::ThreadTaskRunnerHandle::Get(), quota_manager_proxy_,
@@ -421,6 +422,10 @@
 
     quota_policy_ = nullptr;
     mock_quota_manager_ = nullptr;
+    // Note: After the MockQuotaManager goes away, the buckets get destroyed as
+    // well. We won't clear `bucket_locator1_` or `bucket_locator2_`, though,
+    // for cases where it's useful to compare the bucket locator values to
+    // values written to the Cache Storage index files.
 
     cache_manager_ = nullptr;
   }
@@ -897,6 +902,27 @@
           net::features::kThirdPartyStoragePartitioning);
     }
 
+    ReinitializeStorageKeysAndBucketLocators();
+  }
+
+  void CreateStorageManager() {
+    // Always reset `storage_key1_` and `storage_key2_` to what they
+    // are expected to be in CacheStorageManagerTest so that when we
+    // reinitialize below the bucket IDs of the new `bucket_locator1_`
+    // and `bucket_locator2_` will be the same regardless of how many
+    // times `DestroyStorageManager()` and then `CreateStorageManager()`
+    // are called.
+    storage_key1_ =
+        blink::StorageKey(url::Origin::Create(GURL("http://example1.com")));
+    storage_key2_ =
+        blink::StorageKey(url::Origin::Create(GURL("http://example2.com")));
+
+    CacheStorageManagerTest::CreateStorageManager();
+
+    ReinitializeStorageKeysAndBucketLocators();
+  }
+
+  void ReinitializeStorageKeysAndBucketLocators() {
     std::string bucket_name;
     switch (test_case_) {
       case (StorageKeyAndBucketTestCase::kFirstPartyDefault):
@@ -916,13 +942,23 @@
       case (StorageKeyAndBucketTestCase::kFirstPartyDefaultPartitionEnabled):
         // For this case, the storage keys and bucket locators are already
         // initialized correctly.
+        ASSERT_TRUE(storage_key1_.IsFirstPartyContext());
+        ASSERT_TRUE(storage_key2_.IsFirstPartyContext());
+
+        ASSERT_EQ(bucket_locator1_.id, storage::BucketId::FromUnsafeValue(1));
+        ASSERT_EQ(bucket_locator2_.id, storage::BucketId::FromUnsafeValue(2));
         break;
       case (StorageKeyAndBucketTestCase::kFirstPartyNamed):
       case (StorageKeyAndBucketTestCase::kFirstPartyNamedPartitionEnabled):
         // For this case, the storage keys are initialized correctly but we
         // need to create new named buckets.
+        ASSERT_TRUE(storage_key1_.IsFirstPartyContext());
+        ASSERT_TRUE(storage_key2_.IsFirstPartyContext());
+
         bucket_locator1_ = GetOrCreateBucket(storage_key1_, bucket_name);
         bucket_locator2_ = GetOrCreateBucket(storage_key2_, bucket_name);
+        ASSERT_EQ(bucket_locator1_.id, storage::BucketId::FromUnsafeValue(3));
+        ASSERT_EQ(bucket_locator2_.id, storage::BucketId::FromUnsafeValue(4));
         break;
 
       case (StorageKeyAndBucketTestCase::kThirdPartyDefault):
@@ -937,9 +973,12 @@
 
         bucket_locator1_ = GetOrCreateBucket(storage_key1_, bucket_name);
         bucket_locator2_ = GetOrCreateBucket(storage_key2_, bucket_name);
+        ASSERT_EQ(bucket_locator1_.id, storage::BucketId::FromUnsafeValue(3));
+        ASSERT_EQ(bucket_locator2_.id, storage::BucketId::FromUnsafeValue(4));
         break;
     }
   }
+
   bool ThirdPartyStoragePartitioningEnabled() {
     return test_case_ == StorageKeyAndBucketTestCase::
                              kFirstPartyDefaultPartitionEnabled ||
@@ -1827,9 +1866,8 @@
   EXPECT_FALSE(usage[storage_key2_index]->last_modified.is_null());
 }
 
-// TODO(crbug.com/1369300): Re-enable this test.
 TEST_P(CacheStorageManagerStorageKeyAndBucketTestP,
-       DISABLED_GetAllStorageKeysUsageWithPadding) {
+       GetAllStorageKeysUsageWithPadding) {
   EXPECT_EQ(0ULL, GetAllStorageKeysUsage().size());
 
   EXPECT_TRUE(Open(bucket_locator1_, "foo"));
@@ -1840,6 +1878,11 @@
   EXPECT_TRUE(
       CachePut(callback_cache_handle_.value(), GURL("http://example.com/foo")));
 
+  // Ensure that the index file has been written to disk before calling
+  // `GetAllStorageKeysUsage()`.
+  disk_cache::FlushCacheThreadForTesting();
+  content::RunAllTasksUntilIdle();
+
   auto usage = GetAllStorageKeysUsage();
   ASSERT_EQ(1ULL, usage.size());
   int64_t unpadded_size = usage[0]->total_size_bytes;
@@ -3127,11 +3170,8 @@
     }
 
     // Double-check that total_usage is comparable with what's returned by
-    // `GetBucketUsage()`. Note that in my testing the value returned by
-    // `GetBucketUsage()` here is larger than total_usage by 256, possibly
-    // because the migration increases the calculated size depending on how
-    // and/or when the calculation is done.
-    EXPECT_LE(total_usage, GetBucketUsage(bucket_locator1_));
+    // `GetBucketUsage()`.
+    EXPECT_EQ(total_usage, GetBucketUsage(bucket_locator1_));
 
     // Destroy the manager and then ensure that all tasks have completed before
     // continuing. We can't rely on `FlushCacheStorageIndex()` here because it
diff --git a/content/browser/media/capture/frame_test_util.cc b/content/browser/media/capture/frame_test_util.cc
index 7bc6b14..47078563 100644
--- a/content/browser/media/capture/frame_test_util.cc
+++ b/content/browser/media/capture/frame_test_util.cc
@@ -262,10 +262,10 @@
                       transformed.y() - original.y(), 0.0f, 0.0f);
   }
   // The following is the scale-then-translate 2D matrix.
-  const gfx::Transform transform(transformed.width() / original.width(), 0.0f,
-                                 0.0f, transformed.height() / original.height(),
-                                 transformed.x() - original.x(),
-                                 transformed.y() - original.y());
+  const auto transform = gfx::Transform::Affine(
+      transformed.width() / original.width(), 0.0f, 0.0f,
+      transformed.height() / original.height(), transformed.x() - original.x(),
+      transformed.y() - original.y());
   gfx::RectF result(rect);
   transform.TransformRect(&result);
   return result;
diff --git a/content/browser/media/media_browsertest.cc b/content/browser/media/media_browsertest.cc
index 76c29ed..1ebd251 100644
--- a/content/browser/media/media_browsertest.cc
+++ b/content/browser/media/media_browsertest.cc
@@ -27,6 +27,15 @@
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "url/url_util.h"
 
+// Proprietary codecs require acceleration on Android.
+#if BUILDFLAG(IS_ANDROID)
+#define REQUIRE_ACCELERATION_ON_ANDROID() \
+  if (!is_accelerated())                  \
+  return
+#else
+#define REQUIRE_ACCELERATION_ON_ANDROID()
+#endif  // BUILDFLAG(IS_ANDROID)
+
 namespace content {
 
 #if BUILDFLAG(IS_ANDROID)
@@ -127,20 +136,28 @@
   title_watcher->AlsoWaitForTitle(base::ASCIIToUTF16(media::kFailedTitle));
 }
 
-// Tests playback and seeking of an audio or video file over file or http based
-// on a test parameter.  Test starts with playback, then, after X seconds or the
-// ended event fires, seeks near end of file; see player.html for details.  The
-// test completes when either the last 'ended' or an 'error' event fires.
+// Tests playback and seeking of an audio or video file. Test starts with
+// playback then, after X seconds or the ended event fires, seeks near end of
+// file; see player.html for details. The test completes when either the last
+// 'ended' or an 'error' event fires.
 class MediaTest : public testing::WithParamInterface<bool>,
                   public MediaBrowserTest {
  public:
+  bool is_accelerated() { return GetParam(); }
+
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    if (!is_accelerated())
+      command_line->AppendSwitch(switches::kDisableAcceleratedVideoDecode);
+    MediaBrowserTest::SetUpCommandLine(command_line);
+  }
+
   // Play specified audio over http:// or file:// depending on |http| setting.
-  void PlayAudio(const std::string& media_file, bool http) {
+  void PlayAudio(const std::string& media_file, bool http = true) {
     PlayMedia("audio", media_file, http);
   }
 
   // Play specified video over http:// or file:// depending on |http| setting.
-  void PlayVideo(const std::string& media_file, bool http) {
+  void PlayVideo(const std::string& media_file, bool http = true) {
     PlayMedia("video", media_file, http);
   }
 
@@ -154,14 +171,13 @@
 
   void RunErrorMessageTest(const std::string& tag,
                            const std::string& media_file,
-                           const std::string& expected_error_substring,
-                           bool http) {
+                           const std::string& expected_error_substring) {
     base::StringPairs query_params;
     query_params.emplace_back(tag, media_file);
     query_params.emplace_back("error_substr",
                               EncodeErrorMessage(expected_error_substring));
     RunMediaTestPage("player.html", query_params, media::kErrorEventTitle,
-                     http);
+                     true);
   }
 
   void RunVideoSizeTest(const char* media_file, int width, int height) {
@@ -171,133 +187,118 @@
     base::StringPairs query_params;
     query_params.emplace_back("video", media_file);
     query_params.emplace_back("sizetest", "true");
-    RunMediaTestPage("player.html", query_params, expected_title, false);
+    RunMediaTestPage("player.html", query_params, expected_title, true);
   }
 };
 
-#if BUILDFLAG(IS_ANDROID)
-class AndroidPlayerMediaTest : public MediaTest {
- private:
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    MediaTest::SetUpCommandLine(command_line);
-    command_line->AppendSwitch(switches::kDisableAcceleratedVideoDecode);
-  }
-};
-
-// TODO(crbug.com/1094571): Flaky.
-IN_PROC_BROWSER_TEST_P(AndroidPlayerMediaTest, DISABLED_VideoBearMp4) {
-  PlayVideo("bear.mp4", GetParam());
-}
-
-INSTANTIATE_TEST_SUITE_P(File,
-                         AndroidPlayerMediaTest,
-                         ::testing::Values(false));
-INSTANTIATE_TEST_SUITE_P(Http, AndroidPlayerMediaTest, ::testing::Values(true));
-#endif  // BUILDFLAG(IS_ANDROID)
-
 // Android doesn't support Theora.
 #if !BUILDFLAG(IS_ANDROID)
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearTheora) {
-  PlayVideo("bear.ogv", GetParam());
+  PlayVideo("bear.ogv");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearSilentTheora) {
-  PlayVideo("bear_silent.ogv", GetParam());
+  PlayVideo("bear_silent.ogv");
 }
 #endif  // !BUILDFLAG(IS_ANDROID)
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWebm) {
-  PlayVideo("bear.webm", GetParam());
+  PlayVideo("bear.webm");
+}
+
+IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWebm_FileProtocol) {
+  PlayVideo("bear.webm", false);
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearOpusWebm) {
-  PlayAudio("bear-opus.webm", GetParam());
+  PlayAudio("bear-opus.webm");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearOpusMp4) {
-  PlayAudio("bear-opus.mp4", GetParam());
+  PlayAudio("bear-opus.mp4");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearOpusOgg) {
-  PlayAudio("bear-opus.ogg", GetParam());
+  PlayAudio("bear-opus.ogg");
+}
+
+IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearOpusOgg_FileProtocol) {
+  PlayAudio("bear-opus.ogg", false);
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearSilentWebm) {
-  PlayVideo("bear_silent.webm", GetParam());
+  PlayVideo("bear_silent.webm");
 }
 
 // We don't expect android devices to support highbit yet.
-#if defined(ARCH_CPU_X86_FAMILY) && !BUILDFLAG(IS_ANDROID)
-// TODO(crbug.com/1270792): Flaky on Mac.
-#if BUILDFLAG(IS_MAC)
-#define MAYBE_VideoBearHighBitDepthVP9 DISABLED_VideoBearHighBitDepthVP9
-#else
-#define MAYBE_VideoBearHighBitDepthVP9 VideoBearHighBitDepthVP9
-#endif
-IN_PROC_BROWSER_TEST_P(MediaTest, MAYBE_VideoBearHighBitDepthVP9) {
-  PlayVideo("bear-320x180-hi10p-vp9.webm", GetParam());
+#if !BUILDFLAG(IS_ANDROID)
+IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearHighBitDepthVP9) {
+  PlayVideo("bear-320x180-hi10p-vp9.webm");
 }
 
-// TODO(crbug.com/1222748): Flaky on Mac.
-#if BUILDFLAG(IS_MAC)
-#define MAYBE_VideoBear12DepthVP9 DISABLED_VideoBear12DepthVP9
-#else
-#define MAYBE_VideoBear12DepthVP9 VideoBear12DepthVP9
-#endif
-IN_PROC_BROWSER_TEST_P(MediaTest, MAYBE_VideoBear12DepthVP9) {
-  PlayVideo("bear-320x180-hi12p-vp9.webm", GetParam());
+IN_PROC_BROWSER_TEST_P(MediaTest, VideoBear12DepthVP9) {
+  // Hardware decode on does not reliably support 12-bit.
+  if (is_accelerated())
+    return;
+  PlayVideo("bear-320x180-hi12p-vp9.webm");
 }
-#endif
+#endif  // !BUILDFLAG(IS_ANDROID)
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMp4Vp9) {
-  PlayVideo("bear-320x240-v_frag-vp9.mp4", GetParam());
+  PlayVideo("bear-320x240-v_frag-vp9.mp4");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearFlacMp4) {
-  PlayAudio("bear-flac.mp4", GetParam());
+  PlayAudio("bear-flac.mp4");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearFlac192kHzMp4) {
-  PlayAudio("bear-flac-192kHz.mp4", GetParam());
+  PlayAudio("bear-flac-192kHz.mp4");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMovPcmS16be) {
-  PlayAudio("bear_pcm_s16be.mov", GetParam());
+  PlayAudio("bear_pcm_s16be.mov");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMovPcmS24be) {
-  PlayAudio("bear_pcm_s24be.mov", GetParam());
+  PlayAudio("bear_pcm_s24be.mov");
 }
 
 #if BUILDFLAG(USE_PROPRIETARY_CODECS)
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearMp4) {
-  PlayVideo("bear.mp4", GetParam());
+  REQUIRE_ACCELERATION_ON_ANDROID();
+  PlayVideo("bear.mp4");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearSilentMp4) {
-  PlayVideo("bear_silent.mp4", GetParam());
+  REQUIRE_ACCELERATION_ON_ANDROID();
+  PlayVideo("bear_silent.mp4");
 }
 
-IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearRotated0) {
+IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearRotated0) {
+  REQUIRE_ACCELERATION_ON_ANDROID();
   RunVideoSizeTest("bear_rotate_0.mp4", 1280, 720);
 }
 
-IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearRotated90) {
+IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearRotated90) {
+  REQUIRE_ACCELERATION_ON_ANDROID();
   RunVideoSizeTest("bear_rotate_90.mp4", 720, 1280);
 }
 
-IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearRotated180) {
+IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearRotated180) {
+  REQUIRE_ACCELERATION_ON_ANDROID();
   RunVideoSizeTest("bear_rotate_180.mp4", 1280, 720);
 }
 
-IN_PROC_BROWSER_TEST_F(MediaTest, VideoBearRotated270) {
+IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearRotated270) {
+  REQUIRE_ACCELERATION_ON_ANDROID();
   RunVideoSizeTest("bear_rotate_270.mp4", 720, 1280);
 }
 
 #if !BUILDFLAG(IS_ANDROID)
 // Android devices usually only support baseline, main and high.
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearHighBitDepthMp4) {
-  PlayVideo("bear-320x180-hi10p.mp4", GetParam());
+  PlayVideo("bear-320x180-hi10p.mp4");
 }
 
 // Android can't reliably load lots of videos on a page.
@@ -308,7 +309,10 @@
 #else
 #define MAYBE_LoadManyVideos LoadManyVideos
 #endif
-IN_PROC_BROWSER_TEST_F(MediaTest, MAYBE_LoadManyVideos) {
+IN_PROC_BROWSER_TEST_P(MediaTest, MAYBE_LoadManyVideos) {
+  // Only run this test in one configuration.
+  if (is_accelerated())
+    return;
   base::StringPairs query_params;
   RunMediaTestPage("load_many_videos.html", query_params, media::kEndedTitle,
                    true);
@@ -317,89 +321,81 @@
 
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Mpeg4) {
-  PlayVideo("bear_mpeg4_mp3.avi", GetParam());
+  PlayVideo("bear_mpeg4_mp3.avi");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Mpeg4Asp) {
-  PlayVideo("bear_mpeg4asp_mp3.avi", GetParam());
+  PlayVideo("bear_mpeg4asp_mp3.avi");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearAviMp3Divx) {
-  PlayVideo("bear_divx_mp3.avi", GetParam());
+  PlayVideo("bear_divx_mp3.avi");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBear3gpAacH264) {
-  PlayVideo("bear_h264_aac.3gp", GetParam());
+  PlayVideo("bear_h264_aac.3gp");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBear3gpAmrnbMpeg4) {
-  PlayVideo("bear_mpeg4_amrnb.3gp", GetParam());
+  PlayVideo("bear_mpeg4_amrnb.3gp");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavGsmms) {
-  PlayAudio("bear_gsm_ms.wav", GetParam());
+  PlayAudio("bear_gsm_ms.wav");
 }
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 #endif  // BUILDFLAG(USE_PROPRIETARY_CODECS)
 
 IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearFlac) {
-  PlayAudio("bear.flac", GetParam());
+  PlayAudio("bear.flac");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, AudioBearFlacOgg) {
-  PlayAudio("bear-flac.ogg", GetParam());
+  PlayAudio("bear-flac.ogg");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavAlaw) {
-  PlayAudio("bear_alaw.wav", GetParam());
+  PlayAudio("bear_alaw.wav");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavMulaw) {
-  PlayAudio("bear_mulaw.wav", GetParam());
+  PlayAudio("bear_mulaw.wav");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavPcm) {
-  PlayAudio("bear_pcm.wav", GetParam());
+  PlayAudio("bear_pcm.wav");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavPcm3kHz) {
-  PlayAudio("bear_3kHz.wav", GetParam());
+  PlayAudio("bear_3kHz.wav");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoBearWavPcm192kHz) {
-  PlayAudio("bear_192kHz.wav", GetParam());
+  PlayAudio("bear_192kHz.wav");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoTulipWebm) {
-  PlayVideo("tulip2.webm", GetParam());
+  PlayVideo("tulip2.webm");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoErrorMissingResource) {
   RunErrorMessageTest("video", "nonexistent_file.webm",
-                      "MEDIA_ELEMENT_ERROR: Format error", GetParam());
+                      "MEDIA_ELEMENT_ERROR: Format error");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoErrorEmptySrcAttribute) {
-  RunErrorMessageTest("video", "", "MEDIA_ELEMENT_ERROR: Empty src attribute",
-                      GetParam());
+  RunErrorMessageTest("video", "", "MEDIA_ELEMENT_ERROR: Empty src attribute");
 }
 
 IN_PROC_BROWSER_TEST_P(MediaTest, VideoErrorNoSupportedStreams) {
-  // The test doesn't work from file: scheme without AllowFileAccessFromFiles.
-  // TODO(wolenetz): https://crbug.com/1071473: Investigate and reenable the
-  // test.
-  if (!GetParam())
-    return;
-
   RunErrorMessageTest("video", "no_streams.webm",
                       "DEMUXER_ERROR_NO_SUPPORTED_STREAMS: FFmpegDemuxer: no "
-                      "supported streams",
-                      GetParam());
+                      "supported streams");
 }
 
 // Covers tear-down when navigating away as opposed to browser exiting.
-IN_PROC_BROWSER_TEST_F(MediaTest, Navigate) {
-  PlayVideo("bear.webm", false);
+IN_PROC_BROWSER_TEST_P(MediaTest, Navigate) {
+  PlayVideo("bear.webm");
   EXPECT_TRUE(NavigateToURL(shell(), GURL(url::kAboutBlankURL)));
   EXPECT_FALSE(shell()->web_contents()->IsCrashed());
 }
@@ -407,11 +403,10 @@
 IN_PROC_BROWSER_TEST_P(MediaTest, AudioOnly_XHE_AAC_MP4) {
   if (media::IsSupportedAudioType(
           {media::AudioCodec::kAAC, media::AudioCodecProfile::kXHE_AAC})) {
-    PlayAudio("noise-xhe-aac.mp4", GetParam());
+    PlayAudio("noise-xhe-aac.mp4");
   }
 }
 
-INSTANTIATE_TEST_SUITE_P(File, MediaTest, ::testing::Values(false));
-INSTANTIATE_TEST_SUITE_P(Http, MediaTest, ::testing::Values(true));
+INSTANTIATE_TEST_SUITE_P(Default, MediaTest, ::testing::Bool());
 
 }  // namespace content
diff --git a/content/browser/permissions/permission_service_impl.cc b/content/browser/permissions/permission_service_impl.cc
index 921703b..37b5482e 100644
--- a/content/browser/permissions/permission_service_impl.cc
+++ b/content/browser/permissions/permission_service_impl.cc
@@ -14,6 +14,7 @@
 #include "base/memory/ptr_util.h"
 #include "content/browser/bad_message.h"
 #include "content/browser/permissions/permission_controller_impl.h"
+#include "content/browser/permissions/permission_util.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/permission_result.h"
 #include "content/public/browser/render_frame_host.h"
@@ -39,23 +40,6 @@
   std::move(callback).Run(vector[0]);
 }
 
-bool IsDomainOverride(const PermissionDescriptorPtr& descriptor) {
-  return descriptor->extension && descriptor->extension->is_storage_access();
-}
-
-url::Origin ExtractDomainOverride(const PermissionDescriptorPtr& descriptor) {
-  const blink::mojom::StorageAccessPermissionDescriptorPtr&
-      override_descriptor = descriptor->extension->get_storage_access();
-  return override_descriptor->siteOverride;
-}
-
-bool IsDomainOverrideEnabled() {
-  // This code path is currently available only when
-  // requestStorageAccessForOrigin is enabled.
-  return base::FeatureList::IsEnabled(
-      blink::features::kStorageAccessAPIForOriginExtension);
-}
-
 }  // anonymous namespace
 
 class PermissionServiceImpl::PendingRequest {
@@ -145,17 +129,15 @@
 
   int pending_request_id = pending_requests_.Add(std::move(pending_request));
 
-  if (!permissions.empty() && IsDomainOverride(permissions[0])) {
-    if (!IsDomainOverrideEnabled()) {
+  if (!permissions.empty() &&
+      PermissionUtil::IsDomainOverride(permissions[0])) {
+    if (!PermissionUtil::ValidateDomainOverride(
+            types, context_->render_frame_host())) {
       ReceivedBadMessage();
       return;
     }
-    if (types.size() > 1) {
-      // Requests with domain overrides must be requested individually.
-      ReceivedBadMessage();
-      return;
-    }
-    url::Origin requested_origin = ExtractDomainOverride(permissions[0]);
+    url::Origin requested_origin =
+        PermissionUtil::ExtractDomainOverride(permissions[0]);
     PermissionControllerImpl::FromBrowserContext(browser_context)
         ->RequestPermissions(
             types, context_->render_frame_host(), requested_origin,
diff --git a/content/browser/permissions/permission_util.cc b/content/browser/permissions/permission_util.cc
index 009e6353..c090867 100644
--- a/content/browser/permissions/permission_util.cc
+++ b/content/browser/permissions/permission_util.cc
@@ -8,10 +8,13 @@
 #include "build/build_config.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
+#include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/common/web_preferences/web_preferences.h"
 #include "url/gurl.h"
 #include "url/origin.h"
 
+using blink::mojom::PermissionDescriptorPtr;
+
 namespace content {
 
 // Due to dependency issues, this method is duplicated from
@@ -37,4 +40,35 @@
   return render_frame_host->GetLastCommittedOrigin().GetURL();
 }
 
+bool PermissionUtil::IsDomainOverride(
+    const PermissionDescriptorPtr& descriptor) {
+  return descriptor->extension && descriptor->extension->is_storage_access();
+}
+
+url::Origin PermissionUtil::ExtractDomainOverride(
+    const PermissionDescriptorPtr& descriptor) {
+  const blink::mojom::StorageAccessPermissionDescriptorPtr&
+      override_descriptor = descriptor->extension->get_storage_access();
+  return override_descriptor->siteOverride;
+}
+
+bool PermissionUtil::ValidateDomainOverride(
+    const std::vector<blink::PermissionType>& types,
+    RenderFrameHost* rfh) {
+  if (!base::FeatureList::IsEnabled(
+          blink::features::kStorageAccessAPIForOriginExtension)) {
+    return false;
+  }
+  if (types.size() > 1) {
+    // Requests with domain overrides must be requested individually.
+    return false;
+  }
+  if (!rfh || !rfh->IsInPrimaryMainFrame()) {
+    // Requests with domain overrides must be requested from a top-level
+    // browsing context.
+    return false;
+  }
+  return true;
+}
+
 }  // namespace content
diff --git a/content/browser/permissions/permission_util.h b/content/browser/permissions/permission_util.h
index 8780c2c..a045402 100644
--- a/content/browser/permissions/permission_util.h
+++ b/content/browser/permissions/permission_util.h
@@ -6,6 +6,9 @@
 #define CONTENT_BROWSER_PERMISSIONS_PERMISSION_UTIL_H_
 
 #include "content/common/content_export.h"
+#include "third_party/blink/public/common/permissions/permission_utils.h"
+#include "third_party/blink/public/mojom/permissions/permission.mojom.h"
+#include "url/origin.h"
 
 class GURL;
 
@@ -19,6 +22,30 @@
   // TODO(crbug.com/1327384): Remove this method when possible.
   CONTENT_EXPORT static GURL GetLastCommittedOriginAsURL(
       content::RenderFrameHost* render_frame_host);
+
+  // Determines whether the passed-in descriptor indicates a domain override is
+  // being used. The override mechanism is currently only used by one permission
+  // type, specifically storage access requests on behalf of another domain.
+  CONTENT_EXPORT static bool IsDomainOverride(
+      const blink::mojom::PermissionDescriptorPtr& descriptor);
+
+  // For a descriptor that indicates a domain override is used, retrieve it as
+  // an origin. The override mechanism is currently only used by one permission
+  // type, specifically storage access requests on behalf of another domain.
+  CONTENT_EXPORT static url::Origin ExtractDomainOverride(
+      const blink::mojom::PermissionDescriptorPtr& descriptor);
+
+  // Determine whether the domain override mechanism is enabled by features. The
+  // override mechanism is currently only used by one permission type,
+  // specifically storage access requests on behalf of another domain.
+  CONTENT_EXPORT static bool IsDomainOverrideEnabled();
+
+  // For a domain override, determines whether it is valid. The override
+  // mechanism is currently only used by one permission type, specifically
+  // storage access requests on behalf of another domain.
+  CONTENT_EXPORT static bool ValidateDomainOverride(
+      const std::vector<blink::PermissionType>& types,
+      RenderFrameHost* rfh);
 };
 
 }  // namespace content
diff --git a/content/browser/permissions/permission_util_unittest.cc b/content/browser/permissions/permission_util_unittest.cc
new file mode 100644
index 0000000..9a892be
--- /dev/null
+++ b/content/browser/permissions/permission_util_unittest.cc
@@ -0,0 +1,107 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/permissions/permission_util.h"
+#include "base/test/scoped_feature_list.h"
+#include "content/public/test/test_browser_context.h"
+#include "content/public/test/test_renderer_host.h"
+#include "content/public/test/web_contents_tester.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/blink/public/common/features.h"
+#include "third_party/blink/public/mojom/permissions/permission.mojom-forward.h"
+#include "url/gurl.h"
+#include "url/origin.h"
+
+namespace content {
+
+class PermissionUtilTest : public ::testing::Test {};
+
+TEST_F(PermissionUtilTest, TestIsDomainOverrideNoExtension) {
+  blink::mojom::PermissionDescriptorPtr ptr =
+      blink::mojom::PermissionDescriptor::New();
+  EXPECT_FALSE(PermissionUtil::IsDomainOverride(ptr));
+}
+
+TEST_F(PermissionUtilTest, TestIsDomainOverrideWrongExtension) {
+  blink::mojom::PermissionDescriptorPtr ptr =
+      blink::mojom::PermissionDescriptor::New();
+  ptr->extension =
+      blink::mojom::PermissionDescriptorExtension::NewMidi(nullptr);
+  EXPECT_FALSE(PermissionUtil::IsDomainOverride(ptr));
+}
+
+TEST_F(PermissionUtilTest, TestIsDomainOverride) {
+  blink::mojom::PermissionDescriptorPtr ptr =
+      blink::mojom::PermissionDescriptor::New();
+  ptr->extension =
+      blink::mojom::PermissionDescriptorExtension::NewStorageAccess(nullptr);
+  EXPECT_TRUE(PermissionUtil::IsDomainOverride(ptr));
+}
+
+TEST_F(PermissionUtilTest, TestExtractDomainOverride) {
+  url::Origin expected = url::Origin::Create(GURL("https://example.xyz"));
+  blink::mojom::PermissionDescriptorPtr ptr =
+      blink::mojom::PermissionDescriptor::New();
+  auto storage_access_extension =
+      blink::mojom::StorageAccessPermissionDescriptor::New();
+  storage_access_extension->siteOverride = expected;
+  ptr->extension =
+      blink::mojom::PermissionDescriptorExtension::NewStorageAccess(
+          std::move(storage_access_extension));
+  EXPECT_EQ(PermissionUtil::ExtractDomainOverride(ptr), expected);
+}
+
+TEST_F(PermissionUtilTest, TestInvalidDomainOverrideFeatureDisabled) {
+  EXPECT_FALSE(PermissionUtil::ValidateDomainOverride({}, nullptr));
+}
+TEST_F(PermissionUtilTest, TestInvalidDomainOverrideMultiRequest) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kStorageAccessAPIForOriginExtension);
+
+  EXPECT_FALSE(PermissionUtil::ValidateDomainOverride(
+      {blink::PermissionType::STORAGE_ACCESS_GRANT,
+       blink::PermissionType::STORAGE_ACCESS_GRANT},
+      nullptr));
+}
+TEST_F(PermissionUtilTest, TestInvalidDomainOverrideNullRfh) {
+  content::BrowserTaskEnvironment task_environment;
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kStorageAccessAPIForOriginExtension);
+
+  TestBrowserContext browser_context;
+  RenderViewHostTestEnabler enabler;
+  std::unique_ptr<WebContents> web_contents(
+      WebContentsTester::CreateTestWebContents(
+          WebContents::CreateParams(&browser_context)));
+
+  WebContentsTester* web_contents_tester =
+      WebContentsTester::For(web_contents.get());
+  web_contents_tester->NavigateAndCommit(GURL("https://example.xyz"));
+
+  EXPECT_FALSE(PermissionUtil::ValidateDomainOverride(
+      {blink::PermissionType::STORAGE_ACCESS_GRANT}, nullptr));
+}
+TEST_F(PermissionUtilTest, TestValidDomainOverride) {
+  content::BrowserTaskEnvironment task_environment;
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      blink::features::kStorageAccessAPIForOriginExtension);
+
+  TestBrowserContext browser_context;
+  RenderViewHostTestEnabler enabler;
+  std::unique_ptr<WebContents> web_contents(
+      WebContentsTester::CreateTestWebContents(
+          WebContents::CreateParams(&browser_context)));
+
+  WebContentsTester* web_contents_tester =
+      WebContentsTester::For(web_contents.get());
+  web_contents_tester->NavigateAndCommit(GURL("https://example.xyz"));
+
+  EXPECT_TRUE(PermissionUtil::ValidateDomainOverride(
+      {blink::PermissionType::STORAGE_ACCESS_GRANT},
+      web_contents->GetPrimaryMainFrame()));
+}
+}  // namespace content
diff --git a/content/browser/preloading/prefetch/prefetch_service.cc b/content/browser/preloading/prefetch/prefetch_service.cc
index 3ddc091..d1ac012e 100644
--- a/content/browser/preloading/prefetch/prefetch_service.cc
+++ b/content/browser/preloading/prefetch/prefetch_service.cc
@@ -1029,6 +1029,7 @@
     base::WeakPtr<PrefetchContainer> prefetch_container,
     const net::CookieAccessResultList& cookie_list,
     const net::CookieAccessResultList& excluded_cookies) {
+  prefetch_container->OnIsolatedCookiesReadCompleteAndWriteStart();
   RecordPrefetchProxyPrefetchMainframeCookiesToCopy(cookie_list.size());
 
   if (cookie_list.empty()) {
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index c672ad55..b91cbd2 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -4201,6 +4201,17 @@
   if (frame_tree_node_->IsErrorPageIsolationEnabled())
     return ErrorPageProcess::kIsolatedProcess;
 
+  // Site-isolated <webview> guests do not currently support committing
+  // error pages with an unknown URL scheme (such as when navigating a guest to
+  // an external protocol) in the process computed for the destination URL.
+  // Therefore, leave such cases in the original process. See
+  // https://crbug.com/1366450.
+  if (net_error == net::ERR_UNKNOWN_URL_SCHEME &&
+      frame_tree_node_->current_frame_host()->GetSiteInstance()->IsGuest() &&
+      SiteIsolationPolicy::IsSiteIsolationForGuestsEnabled()) {
+    return ErrorPageProcess::kCurrentProcess;
+  }
+
   // Decide whether to leave the error page in the original process.
   // * If this was a renderer-initiated navigation, and the request is blocked
   //   because the initiating document wasn't allowed to make the request,
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index c53db0d..2b33375e 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -2315,6 +2315,7 @@
     "../browser/payments/payment_app_provider_impl_unittest.cc",
     "../browser/payments/payment_manager_unittest.cc",
     "../browser/permissions/permission_controller_impl_unittest.cc",
+    "../browser/permissions/permission_util_unittest.cc",
     "../browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc",
     "../browser/preloading/prefetch/prefetch_canary_checker_unittest.cc",
     "../browser/preloading/prefetch/prefetch_container_unittest.cc",
diff --git a/content/test/attribution_simulator_input_parser.cc b/content/test/attribution_simulator_input_parser.cc
index 99fe544..8283cfd4 100644
--- a/content/test/attribution_simulator_input_parser.cc
+++ b/content/test/attribution_simulator_input_parser.cc
@@ -252,7 +252,7 @@
     url::Origin destination_origin;
     absl::optional<uint64_t> debug_key;
     int64_t priority = 0;
-    base::TimeDelta expiry;
+    absl::optional<base::TimeDelta> expiry;
     AttributionFilterData filter_data;
     AttributionAggregationKeys aggregation_keys;
 
@@ -264,7 +264,7 @@
               destination_origin = ParseOrigin(dict, "destination");
               debug_key = ParseOptionalUint64(dict, "debug_key");
               priority = ParseOptionalInt64(dict, "priority").value_or(0);
-              expiry = ParseSourceExpiry(dict).value_or(base::Days(30));
+              expiry = ParseSourceExpiry(dict);
               filter_data = ParseFilterData(
                   dict, "filter_data",
                   &AttributionFilterData::FromSourceFilterValues);
diff --git a/content/test/gpu/fuchsia_util.py b/content/test/gpu/fuchsia_util.py
index cfb37b81..c43f807 100644
--- a/content/test/gpu/fuchsia_util.py
+++ b/content/test/gpu/fuchsia_util.py
@@ -16,7 +16,7 @@
 def RunTestOnFuchsiaDevice(script_type):
   """Helper method that runs Telemetry based tests on Fuchsia."""
 
-  parser = argparse.ArgumentParser()
+  parser = argparse.ArgumentParser(add_help=False)
   register_common_args(parser)
   script_args, rest_args = parser.parse_known_args()
 
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
index 0a37bb7..60939fd3 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
@@ -336,26 +336,6 @@
 ####################
 # Fuchsia failures #
 ####################
-
-# Astro specific issues
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/extensions/oes-texture-float-with-video.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/extensions/oes-texture-half-float-with-video.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/image_bitmap_from_video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/image_bitmap_from_video/tex-2d-luminance-luminance-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ Failure ]
-crbug.com/1355935 [ fuchsia fuchsia-board-astro ] conformance/textures/video/tex-2d-alpha-alpha-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/video/tex-2d-luminance-luminance-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-astro ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ Failure ]
-
 # OOM on hardware devices
 crbug.com/1146483 [ fuchsia fuchsia-board-astro ] conformance/textures/misc/texture-video-transparent.html [ Failure ]
 
@@ -387,26 +367,7 @@
 # [ fuchsia ] conformance/context/context-attributes-alpha-depth-stencil-antialias.html [ Failure ]
 
 # Sherlock failures
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/extensions/oes-texture-float-with-video.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/extensions/oes-texture-half-float-with-video.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/image_bitmap_from_video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Failure ]
-crbug.com/1268138 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/image_bitmap_from_video/tex-2d-luminance-luminance-unsigned_byte.html [ Failure ]
-crbug.com/1268138 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_byte.html [ Failure ]
-crbug.com/1268138 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/image_bitmap_from_video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/image_bitmap_from_video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ Failure ]
-crbug.com/1268138 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/misc/texture-npot-video.html [ Failure ]
 crbug.com/1261867 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/misc/texture-video-transparent.html [ Failure ]
-crbug.com/1355935 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/video/tex-2d-alpha-alpha-unsigned_byte.html [ Failure ]
-crbug.com/1268138 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/video/tex-2d-luminance-luminance-unsigned_byte.html [ Failure ]
-crbug.com/1268138 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_byte.html [ Failure ]
-crbug.com/1268138 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html [ Failure ]
-crbug.com/1268138 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/misc/texture-corner-case-videos.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/video/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/video/tex-2d-rgb-rgb-unsigned_short_5_6_5.html [ Failure ]
-crbug.com/1145861 [ fuchsia fuchsia-board-sherlock renderer-skia-vulkan ] conformance/textures/video/tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html [ Failure ]
 
 # Failing on emulator seemingly due to network issues.
 crbug.com/1359408 [ fuchsia fuchsia-board-qemu-x64 ] conformance/attribs/gl-vertexattribpointer-offsets.html [ Failure ]
diff --git a/device/bluetooth/floss/bluetooth_adapter_floss.cc b/device/bluetooth/floss/bluetooth_adapter_floss.cc
index 13a624d..01b090f 100644
--- a/device/bluetooth/floss/bluetooth_adapter_floss.cc
+++ b/device/bluetooth/floss/bluetooth_adapter_floss.cc
@@ -890,26 +890,22 @@
                        << ", scanner id = " << static_cast<int>(scanner_id)
                        << ", status = " << static_cast<int>(status);
 
-  if (status != GattStatus::kSuccess) {
-    BLUETOOTH_LOG(ERROR) << "Error registering scanner " << uuid
-                         << ", status: " << static_cast<int>(status);
-    scanners_.erase(uuid);
-    return;
-  }
-
   if (!base::Contains(scanners_, uuid)) {
     VLOG(1) << "ScannerRegistered but no longer exists " << uuid;
     return;
   }
 
-  scanners_[uuid]->OnActivate(scanner_id);
+  if (status != GattStatus::kSuccess) {
+    BLUETOOTH_LOG(ERROR) << "Error registering scanner " << uuid
+                         << ", status: " << static_cast<int>(status);
+    scanners_[uuid]->OnActivate(scanner_id, /*success=*/false);
+    return;
+  }
 
   FlossDBusManager::Get()->GetLEScanClient()->StartScan(
       base::BindOnce(&BluetoothAdapterFloss::OnStartScan,
-                     weak_ptr_factory_.GetWeakPtr()),
+                     weak_ptr_factory_.GetWeakPtr(), uuid, scanner_id),
       scanner_id, ScanSettings{}, ScanFilter{});
-
-  return;
 }
 
 void BluetoothAdapterFloss::ScanResultReceived(ScanResult scan_result) {
@@ -1021,11 +1017,25 @@
   BLUETOOTH_LOG(EVENT) << "Registering scanner " << ret.value();
 }
 
-void BluetoothAdapterFloss::OnStartScan(DBusResult<Void> ret) {
-  BLUETOOTH_LOG(EVENT) << "OnStartScan success = " << ret.has_value();
-  if (!ret.has_value()) {
-    BLUETOOTH_LOG(ERROR) << "Failed StartScan: " << ret.error();
+void BluetoothAdapterFloss::OnStartScan(
+    device::BluetoothUUID uuid,
+    uint8_t scanner_id,
+    DBusResult<FlossDBusClient::BtifStatus> ret) {
+  if (!base::Contains(scanners_, uuid)) {
+    VLOG(1) << "Started scanning but scanner no longer exists " << uuid;
+    return;
   }
+
+  if (!ret.has_value() ||
+      ret.value() != FlossDBusClient::BtifStatus::kSuccess) {
+    BLUETOOTH_LOG(ERROR) << "Failed StartScan: " << ret.error()
+                         << ", status: " << static_cast<uint32_t>(ret.value());
+    scanners_[uuid]->OnActivate(scanner_id, /*success=*/false);
+    return;
+  }
+
+  BLUETOOTH_LOG(EVENT) << "OnStartScan succeeded";
+  scanners_[uuid]->OnActivate(scanner_id, /*success=*/true);
 }
 
 void BluetoothAdapterFloss::OnLowEnergyScanSessionDestroyed(
diff --git a/device/bluetooth/floss/bluetooth_adapter_floss.h b/device/bluetooth/floss/bluetooth_adapter_floss.h
index 834d998..4210265 100644
--- a/device/bluetooth/floss/bluetooth_adapter_floss.h
+++ b/device/bluetooth/floss/bluetooth_adapter_floss.h
@@ -224,7 +224,9 @@
   void OnRegisterScanner(
       base::WeakPtr<BluetoothLowEnergyScanSessionFloss> scan_session,
       DBusResult<device::BluetoothUUID> ret);
-  void OnStartScan(DBusResult<Void> ret);
+  void OnStartScan(device::BluetoothUUID uuid,
+                   uint8_t scanner_id,
+                   DBusResult<FlossDBusClient::BtifStatus> ret);
   void OnLowEnergyScanSessionDestroyed(const std::string& uuid_str);
   void OnUnregisterScanner(uint8_t scanner_id, DBusResult<bool> ret);
 
diff --git a/device/bluetooth/floss/bluetooth_floss_unittest.cc b/device/bluetooth/floss/bluetooth_floss_unittest.cc
index 99be970..c0271c2 100644
--- a/device/bluetooth/floss/bluetooth_floss_unittest.cc
+++ b/device/bluetooth/floss/bluetooth_floss_unittest.cc
@@ -148,12 +148,13 @@
 
     floss_adapter->ScannerRegistered(device::BluetoothUUID(kTestUuidStr),
                                      kTestScannerId, GattStatus::kSuccess);
+
+    base::RunLoop().RunUntilIdle();
+
     ScanResult scan_result;
     scan_result.address = kTestDeviceAddr;
     scan_result.name = kTestDeviceName;
     floss_adapter->ScanResultReceived(scan_result);
-
-    base::RunLoop().RunUntilIdle();
   }
 
  protected:
diff --git a/device/bluetooth/floss/bluetooth_low_energy_scan_session_floss.cc b/device/bluetooth/floss/bluetooth_low_energy_scan_session_floss.cc
index d5a6736..e761bca 100644
--- a/device/bluetooth/floss/bluetooth_low_energy_scan_session_floss.cc
+++ b/device/bluetooth/floss/bluetooth_low_energy_scan_session_floss.cc
@@ -20,13 +20,20 @@
   std::move(destructor_callback_).Run(uuid_.value());
 }
 
-void BluetoothLowEnergyScanSessionFloss::OnActivate(uint8_t scanner_id) {
-  has_activated_ = true;
+void BluetoothLowEnergyScanSessionFloss::OnActivate(uint8_t scanner_id,
+                                                    bool success) {
   scanner_id_ = scanner_id;
   if (!delegate_) {
     return;
   }
 
+  if (!success) {
+    delegate_->OnSessionStarted(
+        this, BluetoothLowEnergyScanSession::ErrorCode::kFailed);
+    return;
+  }
+
+  has_activated_ = true;
   delegate_->OnSessionStarted(this, /*error_code=*/absl::nullopt);
 }
 
diff --git a/device/bluetooth/floss/bluetooth_low_energy_scan_session_floss.h b/device/bluetooth/floss/bluetooth_low_energy_scan_session_floss.h
index 0db7400e..00cb1f0 100644
--- a/device/bluetooth/floss/bluetooth_low_energy_scan_session_floss.h
+++ b/device/bluetooth/floss/bluetooth_low_energy_scan_session_floss.h
@@ -21,7 +21,7 @@
       base::OnceCallback<void(const std::string&)> destructor_callback);
   ~BluetoothLowEnergyScanSessionFloss() override;
 
-  void OnActivate(uint8_t scanner_id);
+  void OnActivate(uint8_t scanner_id, bool success);
   void OnRelease();
   void OnDeviceFound(device::BluetoothDevice* device);
   void OnDeviceLost(device::BluetoothDevice* device);
diff --git a/device/bluetooth/floss/fake_floss_lescan_client.cc b/device/bluetooth/floss/fake_floss_lescan_client.cc
index c60a40d..e9d69300 100644
--- a/device/bluetooth/floss/fake_floss_lescan_client.cc
+++ b/device/bluetooth/floss/fake_floss_lescan_client.cc
@@ -37,12 +37,14 @@
       FROM_HERE, base::BindOnce(std::move(callback), true));
 }
 
-void FakeFlossLEScanClient::StartScan(ResponseCallback<Void> callback,
+void FakeFlossLEScanClient::StartScan(ResponseCallback<BtifStatus> callback,
                                       uint8_t scanner_id,
                                       const ScanSettings& scan_settings,
                                       const ScanFilter& filters) {
   // TODO (b/217274013): filters are currently being ignored
   scanner_ids_.insert(scanner_id);
+  base::ThreadTaskRunnerHandle::Get()->PostTask(
+      FROM_HERE, base::BindOnce(std::move(callback), BtifStatus::kSuccess));
 }
 
 }  // namespace floss
diff --git a/device/bluetooth/floss/fake_floss_lescan_client.h b/device/bluetooth/floss/fake_floss_lescan_client.h
index 074a23d..0e055f7 100644
--- a/device/bluetooth/floss/fake_floss_lescan_client.h
+++ b/device/bluetooth/floss/fake_floss_lescan_client.h
@@ -26,7 +26,7 @@
       ResponseCallback<device::BluetoothUUID> callback) override;
   void UnregisterScanner(ResponseCallback<bool> callback,
                          uint8_t scanner_id) override;
-  void StartScan(ResponseCallback<Void> callback,
+  void StartScan(ResponseCallback<BtifStatus> callback,
                  uint8_t scanner_id,
                  const ScanSettings& scan_settings,
                  const ScanFilter& filters) override;
diff --git a/device/bluetooth/floss/floss_lescan_client.cc b/device/bluetooth/floss/floss_lescan_client.cc
index 4415d2e..8a1a57f 100644
--- a/device/bluetooth/floss/floss_lescan_client.cc
+++ b/device/bluetooth/floss/floss_lescan_client.cc
@@ -130,7 +130,7 @@
                      scanner_id);
 }
 
-void FlossLEScanClient::StartScan(ResponseCallback<Void> callback,
+void FlossLEScanClient::StartScan(ResponseCallback<BtifStatus> callback,
                                   uint8_t scanner_id,
                                   const ScanSettings& scan_settings,
                                   const ScanFilter& filter) {
@@ -138,7 +138,7 @@
                      scan_settings, filter);
 }
 
-void FlossLEScanClient::StopScan(ResponseCallback<Void> callback,
+void FlossLEScanClient::StopScan(ResponseCallback<BtifStatus> callback,
                                  uint8_t scanner_id) {
   CallLEScanMethod<>(std::move(callback), adapter::kStopScan, scanner_id);
 }
diff --git a/device/bluetooth/floss/floss_lescan_client.h b/device/bluetooth/floss/floss_lescan_client.h
index 1fc95f4..5d85703 100644
--- a/device/bluetooth/floss/floss_lescan_client.h
+++ b/device/bluetooth/floss/floss_lescan_client.h
@@ -104,11 +104,12 @@
       ResponseCallback<device::BluetoothUUID> callback);
   virtual void UnregisterScanner(ResponseCallback<bool> callback,
                                  uint8_t scanner_id);
-  virtual void StartScan(ResponseCallback<Void> callback,
+  virtual void StartScan(ResponseCallback<BtifStatus> callback,
                          uint8_t scanner_id,
                          const ScanSettings& scan_settings,
                          const ScanFilter& filter);
-  virtual void StopScan(ResponseCallback<Void> callback, uint8_t scanner_id);
+  virtual void StopScan(ResponseCallback<BtifStatus> callback,
+                        uint8_t scanner_id);
 
  protected:
   // ScannerClientObserver overrides
diff --git a/device/bluetooth/floss/floss_lescan_client_unittest.cc b/device/bluetooth/floss/floss_lescan_client_unittest.cc
index de068bd..8385161 100644
--- a/device/bluetooth/floss/floss_lescan_client_unittest.cc
+++ b/device/bluetooth/floss/floss_lescan_client_unittest.cc
@@ -375,14 +375,21 @@
         uint8_t param1;
         ASSERT_TRUE(FlossDBusClient::ReadDBusParam(&msg, &param1));
         EXPECT_EQ(kTestScannerId, param1);
-        // Create a fake response with no return value.
+        // Create a fake response with BtifStatus return value.
         auto response = ::dbus::Response::CreateEmpty();
+        dbus::MessageWriter writer(response.get());
+        writer.AppendUint32(
+            static_cast<uint32_t>(FlossDBusClient::BtifStatus::kSuccess));
         std::move(*cb).Run(response.get(), /*err=*/nullptr);
       });
-  client_->StartScan(base::BindLambdaForTesting([](DBusResult<Void> ret) {
-                       // Check that there is no error
-                       EXPECT_TRUE(ret.has_value());
-                     }),
+  client_->StartScan(base::BindLambdaForTesting(
+                         [](DBusResult<FlossDBusClient::BtifStatus> ret) {
+                           // Check that there is no error and return is parsed
+                           // correctly
+                           EXPECT_TRUE(ret.has_value());
+                           EXPECT_EQ(ret.value(),
+                                     FlossDBusClient::BtifStatus::kSuccess);
+                         }),
                      kTestScannerId, ScanSettings{}, ScanFilter{});
 
   // Method of 1 parameter with no return.
@@ -396,14 +403,21 @@
         ASSERT_TRUE(FlossDBusClient::ReadAllDBusParams(&msg, &param1));
         EXPECT_EQ(kTestScannerId, param1);
         EXPECT_FALSE(msg.HasMoreData());
-        // Create a fake response with no return value.
+        // Create a fake response with BtifStatus return value.
         auto response = ::dbus::Response::CreateEmpty();
+        dbus::MessageWriter writer(response.get());
+        writer.AppendUint32(
+            static_cast<uint32_t>(FlossDBusClient::BtifStatus::kSuccess));
         std::move(*cb).Run(response.get(), /*err=*/nullptr);
       });
-  client_->StopScan(base::BindLambdaForTesting([](DBusResult<Void> ret) {
-                      // Check that there is no error
-                      EXPECT_TRUE(ret.has_value());
-                    }),
+  client_->StopScan(base::BindLambdaForTesting(
+                        [](DBusResult<FlossDBusClient::BtifStatus> ret) {
+                          // Check that there is no error and return is parsed
+                          // correctly
+                          EXPECT_TRUE(ret.has_value());
+                          EXPECT_EQ(ret.value(),
+                                    FlossDBusClient::BtifStatus::kSuccess);
+                        }),
                     kTestScannerId);
 }
 
diff --git a/device/vr/android/arcore/arcore.cc b/device/vr/android/arcore/arcore.cc
index c3988832..7faa13f0 100644
--- a/device/vr/android/arcore/arcore.cc
+++ b/device/vr/android/arcore/arcore.cc
@@ -22,7 +22,7 @@
   //
   return MatrixFromTransformedPoints(
              TransformDisplayUvCoords(kInputCoordinatesForTransform)) *
-         gfx::Transform(1, 0, 0, -1, 0, 1);
+         gfx::Transform::Affine(1, 0, 0, -1, 0, 1);
 }
 
 gfx::Transform ArCore::GetDepthUvFromScreenUvTransform() const {
diff --git a/device/vr/android/arcore/arcore_gl.cc b/device/vr/android/arcore/arcore_gl.cc
index bd2009f..aa49005 100644
--- a/device/vr/android/arcore/arcore_gl.cc
+++ b/device/vr/android/arcore/arcore_gl.cc
@@ -1732,7 +1732,7 @@
 
     // Fill in the transform matrix in row-major order. The first three columns
     // contain the basis vectors, the fourth column the position offset.
-    gfx::Transform viewer_from_pointer(
+    auto viewer_from_pointer = gfx::Transform::RowMajor(
         new_x.x(), new_y.x(), new_z.x(), touch_point.x(),  // row 1
         new_x.y(), new_y.y(), new_z.y(), touch_point.y(),  // row 2
         new_x.z(), new_y.z(), new_z.z(), touch_point.z(),  // row 3
diff --git a/device/vr/android/gvr/gvr_utils.cc b/device/vr/android/gvr/gvr_utils.cc
index 07a09115..8da5ac3 100644
--- a/device/vr/android/gvr/gvr_utils.cc
+++ b/device/vr/android/gvr/gvr_utils.cc
@@ -89,10 +89,10 @@
 namespace gvr_utils {
 
 void GvrMatToTransform(const gvr::Mat4f& in, gfx::Transform* out) {
-  *out = gfx::Transform(in.m[0][0], in.m[0][1], in.m[0][2], in.m[0][3],
-                        in.m[1][0], in.m[1][1], in.m[1][2], in.m[1][3],
-                        in.m[2][0], in.m[2][1], in.m[2][2], in.m[2][3],
-                        in.m[3][0], in.m[3][1], in.m[3][2], in.m[3][3]);
+  *out = gfx::Transform::RowMajor(
+      in.m[0][0], in.m[0][1], in.m[0][2], in.m[0][3], in.m[1][0], in.m[1][1],
+      in.m[1][2], in.m[1][3], in.m[2][0], in.m[2][1], in.m[2][2], in.m[2][3],
+      in.m[3][0], in.m[3][1], in.m[3][2], in.m[3][3]);
 }
 
 std::vector<device::mojom::XRViewPtr> CreateViews(
diff --git a/device/vr/test/test_hook.h b/device/vr/test/test_hook.h
index c995739b..185487f1 100644
--- a/device/vr/test/test_hook.h
+++ b/device/vr/test/test_hook.h
@@ -131,10 +131,9 @@
   // transpose since it looks cleaner than manually transposing the arguments
   // passed to the constructor.
   float* t = data.device_to_origin;
-  gfx::Transform transform(t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8],
-                           t[9], t[10], t[11], t[12], t[13], t[14], t[15]);
-  transform.Transpose();
-  return transform;
+  return gfx::Transform::ColMajor(t[0], t[1], t[2], t[3], t[4], t[5], t[6],
+                                  t[7], t[8], t[9], t[10], t[11], t[12], t[13],
+                                  t[14], t[15]);
 }
 
 // Tests may implement this, and register it to control behavior of VR runtime.
diff --git a/docs/fuchsia/gpu_testing.md b/docs/fuchsia/gpu_testing.md
index 5701ff5..bed87355 100644
--- a/docs/fuchsia/gpu_testing.md
+++ b/docs/fuchsia/gpu_testing.md
@@ -28,24 +28,22 @@
 --browser=web-engine-shell --out-dir=/path/to/outdir -d
 ```
 
-## Run on a device paved with Fuchsia built from source
+## Run on a device that needs packages built from Fuchsia source
 
 ```bash
 $ content/test/gpu/run_gpu_integration_test_fuchsia.py gpu_process
 --browser=web-engine-shell --out-dir=/path/to/outdir -d
---fuchsia-out-dir=/path/to/fuchsia/outdir
+--repo=/path/to/fuchsia/outdir --no-repo-init
 ```
 
-Note that `fx serve` must be running for communication with the device to
-succeed.
+Note that `fx serve` should not be running, since the script
+handles launching the package server from the Fuchsia output directory.
 
 ## Run on a device the host is connected to remotely via ssh
 
-Note the `--ssh-config` flag, which should point to the config file used to set
-up the connection between the host and the remote device.
-
 ```bash
 $ content/test/gpu/run_gpu_integration_test_fuchsia.py gpu_process
---browser=web-engine-shell --out-dir=/path/to/outdir -d --host=localhost
---ssh-config=/path/to/ssh/config
+--browser=web-engine-shell --out-dir=/path/to/outdir -d --target-id=[::1]:8022
 ```
+
+Note the this requires a remote tunnel to have been set up first.
diff --git a/docs/fuchsia/telemetry.md b/docs/fuchsia/telemetry.md
index d4380b3..49019e2 100644
--- a/docs/fuchsia/telemetry.md
+++ b/docs/fuchsia/telemetry.md
@@ -27,15 +27,15 @@
 
 ---
 
-After building chromium, be sure to have a paved device that has gone through
-OOBEattached to the host. Run the following from the chromium build
+After building chromium, be sure to have a device that has gone through
+OOBE attached to the host. Run the following from the chromium build
 directory if you want to run a specific benchmark:
 
 ```shell
 $ ../../content/test/gpu/run_telemetry_benchmark_fuchsia.py \
 --browser=web-engine-shell  --output-format=histograms  \
---experimental-tbmv3-metrics -d --host=localhost \
-[--fuchsia-out-dir=/path/to/fuchsia/out/dir] \  # Deploy custom fuchsia.
+--experimental-tbmv3-metrics -d
+[--repo=/path/to/fuchsia/out/dir --no-repo-init] \  # Deploy custom fuchsia.
 [benchmark] [--story-filter=<story name>]
 ```
 
@@ -45,13 +45,13 @@
 ```shell
 $ ../../content/test/gpu/run_telemetry_benchmark_fuchsia.py \
 --browser=web-engine-shell  --output-format=histograms  \
---experimental-tbmv3-metrics -d --host=localhost system_health.memory_desktop \
+--experimental-tbmv3-metrics -d system_health.memory_desktop \
 --story-filter=load:chrome:blank
 ```
 
 If no benchmark or filter is specified, all supported benchmarks will run.
 
-## Run on an emulator
+## Run on an ephemeral emulator
 If you wish to run the tests on an emulator, simply drop the `-d` flag. This
 will start an emulator and run through the supported tests, like so.
 
@@ -69,15 +69,12 @@
 As connecting to a device that is not connected to a workstation is more common,
 this flow is what is recommended and tested.
 
-Be sure to first open a tunnel to your device and have a `pm` server running and
-serving to your device:
+Be sure to first open a tunnel to your device:
 
 ```shell
 $ ../../content/test/gpu/run_telemetry_benchmark_fuchsia.py \
 --browser=web-engine-shell  --output-format=histograms  \
---experimental-tbmv3-metrics -d --host=localhost \
---ssh-config=<sshconfig file>  [benchmark] [--story-filter=<story name>]
+--experimental-tbmv3-metrics -d --target-id=[::1]:8022 \
+[benchmark] [--story-filter=<story name>]
 ```
-The SSH config path is typically `$HOME/.fuchsia/sshconfig`.
-
 See the above section on how to use the `benchmark` and `--story-filter`.
diff --git a/docs/security/clusterfuzz-for-sheriffs.md b/docs/security/clusterfuzz-for-sheriffs.md
index 961ce23..ec0ba53 100644
--- a/docs/security/clusterfuzz-for-sheriffs.md
+++ b/docs/security/clusterfuzz-for-sheriffs.md
@@ -11,7 +11,8 @@
 allows you to upload files to reproduce crashes on various platforms and will
 identify revision ranges when the regression was introduced. If a test case
 requires multiple files, they can be uploaded together in a zip or tar
-archive: the main file needs to contain the words `index`, `crash` or `test`.
+archive: the main file needs to contain the words `run`, `fuzz-` `index.` or
+`crash.`.
 
 Please *do* specify the crbug number when uploading the test case. This will allow
 ClusterFuzz to keep the crbug updated with progress.
diff --git a/extensions/browser/api/socket/udp_socket.cc b/extensions/browser/api/socket/udp_socket.cc
index 2c78847..96d055962 100644
--- a/extensions/browser/api/socket/udp_socket.cc
+++ b/extensions/browser/api/socket/udp_socket.cc
@@ -4,12 +4,12 @@
 
 #include "extensions/browser/api/socket/udp_socket.h"
 
-#include <algorithm>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/containers/contains.h"
 #include "base/lazy_instance.h"
+#include "base/ranges/algorithm.h"
 #include "extensions/browser/api/api_resource.h"
 #include "net/base/ip_address.h"
 #include "net/base/ip_endpoint.h"
@@ -306,8 +306,8 @@
                                       const std::string& normalized_address,
                                       int result) {
   if (result == net::OK) {
-    auto find_result = std::find(multicast_groups_.begin(),
-                                 multicast_groups_.end(), normalized_address);
+    auto find_result =
+        base::ranges::find(multicast_groups_, normalized_address);
     multicast_groups_.erase(find_result);
   }
 
@@ -343,9 +343,7 @@
   }
 
   std::string normalized_address = ip.ToString();
-  auto find_result = std::find(multicast_groups_.begin(),
-                               multicast_groups_.end(), normalized_address);
-  if (find_result == multicast_groups_.end()) {
+  if (!base::Contains(multicast_groups_, normalized_address)) {
     std::move(callback).Run(net::ERR_ADDRESS_INVALID);
     return;
   }
diff --git a/extensions/browser/app_window/app_window_registry.cc b/extensions/browser/app_window/app_window_registry.cc
index 26858cf..8d46da1c 100644
--- a/extensions/browser/app_window/app_window_registry.cc
+++ b/extensions/browser/app_window/app_window_registry.cc
@@ -9,6 +9,7 @@
 
 #include "base/containers/contains.h"
 #include "base/observer_list.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 #include "content/public/browser/browser_context.h"
@@ -79,7 +80,7 @@
 
 void AppWindowRegistry::RemoveAppWindow(AppWindow* app_window) {
   const AppWindowList::iterator it =
-      std::find(app_windows_.begin(), app_windows_.end(), app_window);
+      base::ranges::find(app_windows_, app_window);
   if (it != app_windows_.end())
     app_windows_.erase(it);
   for (auto& observer : observers_)
@@ -183,7 +184,7 @@
 
 void AppWindowRegistry::BringToFront(AppWindow* app_window) {
   const AppWindowList::iterator it =
-      std::find(app_windows_.begin(), app_windows_.end(), app_window);
+      base::ranges::find(app_windows_, app_window);
   if (it != app_windows_.end())
     app_windows_.erase(it);
   app_windows_.push_front(app_window);
diff --git a/extensions/browser/extension_host_queue.cc b/extensions/browser/extension_host_queue.cc
index 53339dfb..f8f3f064 100644
--- a/extensions/browser/extension_host_queue.cc
+++ b/extensions/browser/extension_host_queue.cc
@@ -4,11 +4,10 @@
 
 #include "extensions/browser/extension_host_queue.h"
 
-#include <algorithm>
-
 #include "base/bind.h"
 #include "base/location.h"
 #include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -32,7 +31,7 @@
 }
 
 void ExtensionHostQueue::Remove(DeferredStartRenderHost* host) {
-  auto it = std::find(queue_.begin(), queue_.end(), host);
+  auto it = base::ranges::find(queue_, host);
   if (it != queue_.end())
     queue_.erase(it);
 }
diff --git a/extensions/browser/install/crx_install_error.cc b/extensions/browser/install/crx_install_error.cc
index 5c6dd06..7c658f28 100644
--- a/extensions/browser/install/crx_install_error.cc
+++ b/extensions/browser/install/crx_install_error.cc
@@ -4,9 +4,8 @@
 
 #include "extensions/browser/install/crx_install_error.h"
 
-#include <algorithm>
-
 #include "base/check_op.h"
+#include "base/containers/contains.h"
 #include "extensions/browser/install/sandboxed_unpacker_failure_reason.h"
 
 namespace extensions {
@@ -78,10 +77,7 @@
     return false;
   const SandboxedUnpackerFailureReason unpacker_failure_reason =
       sandbox_failure_detail();
-  return std::find(std::begin(kVerificationFailureReasons),
-                   std::end(kVerificationFailureReasons),
-                   unpacker_failure_reason) !=
-         std::end(kVerificationFailureReasons);
+  return base::Contains(kVerificationFailureReasons, unpacker_failure_reason);
 }
 
 // Returns true if the error occurred during crx installation due to mismatch in
diff --git a/extensions/browser/service_worker/worker_id_set_unittest.cc b/extensions/browser/service_worker/worker_id_set_unittest.cc
index 1688b51..aef3b13 100644
--- a/extensions/browser/service_worker/worker_id_set_unittest.cc
+++ b/extensions/browser/service_worker/worker_id_set_unittest.cc
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <algorithm>
 #include <memory>
 #include <string>
 
+#include "base/containers/contains.h"
 #include "extensions/browser/service_worker/worker_id_set.h"
 #include "extensions/common/extension_id.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -48,8 +48,7 @@
   }
 
   bool Contains(const WorkerId& worker_id) const {
-    return std::find(workers_.begin(), workers_.end(), worker_id) !=
-           workers_.end();
+    return base::Contains(workers_, worker_id);
   }
 
  private:
diff --git a/extensions/common/manifest_handlers/mime_types_handler.cc b/extensions/common/manifest_handlers/mime_types_handler.cc
index 47003e2b..b351db89 100644
--- a/extensions/common/manifest_handlers/mime_types_handler.cc
+++ b/extensions/common/manifest_handlers/mime_types_handler.cc
@@ -8,6 +8,7 @@
 
 #include "base/metrics/histogram_functions.h"
 #include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
@@ -78,8 +79,7 @@
 // static
 void MimeTypesHandler::ReportUsedHandler(const std::string& extension_id) {
   auto* const* it =
-      std::find(std::begin(kMIMETypeHandlersAllowlist),
-                std::end(kMIMETypeHandlersAllowlist), extension_id);
+      base::ranges::find(kMIMETypeHandlersAllowlist, extension_id);
   if (it != std::end(kMIMETypeHandlersAllowlist)) {
     MimeHandlerType type = static_cast<MimeHandlerType>(
         it - std::begin(kMIMETypeHandlersAllowlist));
diff --git a/extensions/renderer/api/automation/automation_internal_custom_bindings.cc b/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
index 7b75fd414..bffb7c7b 100644
--- a/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
+++ b/extensions/renderer/api/automation/automation_internal_custom_bindings.cc
@@ -551,14 +551,14 @@
 
 void AutomationInternalCustomBindings::RouteHandlerFunction(
     const std::string& name,
-    HandlerFunction handler_function) {
+    AutomationV8Router::HandlerFunction handler_function) {
   ObjectBackedNativeHandler::RouteHandlerFunction(name, handler_function);
 }
 
 void AutomationInternalCustomBindings::RouteHandlerFunction(
     const std::string& name,
     const std::string& api_name,
-    HandlerFunction handler_function) {
+    AutomationV8Router::HandlerFunction handler_function) {
   ObjectBackedNativeHandler::RouteHandlerFunction(name, api_name,
                                                   handler_function);
 }
diff --git a/extensions/renderer/api/automation/automation_internal_custom_bindings.h b/extensions/renderer/api/automation/automation_internal_custom_bindings.h
index a317de7..ce4a432 100644
--- a/extensions/renderer/api/automation/automation_internal_custom_bindings.h
+++ b/extensions/renderer/api/automation/automation_internal_custom_bindings.h
@@ -76,11 +76,13 @@
   void ThrowInvalidArgumentsException(bool is_fatal = true) const override;
   v8::Isolate* GetIsolate() const override;
   v8::Local<v8::Context> GetContext() const override;
-  void RouteHandlerFunction(const std::string& name,
-                            HandlerFunction handler_function) override;
-  void RouteHandlerFunction(const std::string& name,
-                            const std::string& api_name,
-                            HandlerFunction handler_function) override;
+  void RouteHandlerFunction(
+      const std::string& name,
+      AutomationV8Router::HandlerFunction handler_function) override;
+  void RouteHandlerFunction(
+      const std::string& name,
+      const std::string& api_name,
+      AutomationV8Router::HandlerFunction handler_function) override;
   std::tuple<ax::mojom::Event, ui::AXEventGenerator::Event> ParseEventType(
       const std::string& event_type) const override;
   ui::TreeChangeObserverFilter ParseTreeChangeObserverFilter(
diff --git a/extensions/renderer/bindings/api_event_handler.cc b/extensions/renderer/bindings/api_event_handler.cc
index 6bd1b7b..7beaab4 100644
--- a/extensions/renderer/bindings/api_event_handler.cc
+++ b/extensions/renderer/bindings/api_event_handler.cc
@@ -4,7 +4,6 @@
 
 #include "extensions/renderer/bindings/api_event_handler.h"
 
-#include <algorithm>
 #include <map>
 #include <memory>
 #include <utility>
@@ -14,6 +13,7 @@
 #include "base/callback_helpers.h"
 #include "base/check.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "base/supports_user_data.h"
 #include "base/values.h"
 #include "content/public/renderer/v8_value_converter.h"
@@ -206,8 +206,7 @@
   }
 
   emitter->Invalidate(context);
-  auto emitter_entry = std::find(data->anonymous_emitters.begin(),
-                                 data->anonymous_emitters.end(), event);
+  auto emitter_entry = base::ranges::find(data->anonymous_emitters, event);
   if (emitter_entry == data->anonymous_emitters.end()) {
     NOTREACHED();
     return;
diff --git a/extensions/renderer/bindings/api_event_listeners.cc b/extensions/renderer/bindings/api_event_listeners.cc
index 2007700..bc51084 100644
--- a/extensions/renderer/bindings/api_event_listeners.cc
+++ b/extensions/renderer/bindings/api_event_listeners.cc
@@ -4,9 +4,10 @@
 
 #include "extensions/renderer/bindings/api_event_listeners.h"
 
-#include <algorithm>
 #include <memory>
 
+#include "base/containers/contains.h"
+#include "base/ranges/algorithm.h"
 #include "content/public/renderer/v8_value_converter.h"
 #include "extensions/common/event_matcher.h"
 #include "extensions/common/mojom/event_dispatcher.mojom.h"
@@ -139,7 +140,7 @@
 
 void UnfilteredEventListeners::RemoveListener(v8::Local<v8::Function> listener,
                                               v8::Local<v8::Context> context) {
-  auto iter = std::find(listeners_.begin(), listeners_.end(), listener);
+  auto iter = base::ranges::find(listeners_, listener);
   if (iter == listeners_.end())
     return;
 
@@ -151,8 +152,7 @@
 }
 
 bool UnfilteredEventListeners::HasListener(v8::Local<v8::Function> listener) {
-  return std::find(listeners_.begin(), listeners_.end(), listener) !=
-         listeners_.end();
+  return base::Contains(listeners_, listener);
 }
 
 size_t UnfilteredEventListeners::GetNumListeners() {
@@ -290,7 +290,7 @@
 
 void FilteredEventListeners::RemoveListener(v8::Local<v8::Function> listener,
                                             v8::Local<v8::Context> context) {
-  auto iter = std::find(listeners_.begin(), listeners_.end(), listener);
+  auto iter = base::ranges::find(listeners_, listener);
   if (iter == listeners_.end())
     return;
 
@@ -301,8 +301,7 @@
 }
 
 bool FilteredEventListeners::HasListener(v8::Local<v8::Function> listener) {
-  return std::find(listeners_.begin(), listeners_.end(), listener) !=
-         listeners_.end();
+  return base::Contains(listeners_, listener);
 }
 
 size_t FilteredEventListeners::GetNumListeners() {
diff --git a/fuchsia_web/runners/cast/cast_runner.cmx b/fuchsia_web/runners/cast/cast_runner.cmx
index 5a5c7848..1ae0802 100644
--- a/fuchsia_web/runners/cast/cast_runner.cmx
+++ b/fuchsia_web/runners/cast/cast_runner.cmx
@@ -3,45 +3,8 @@
     "binary": "cast_runner_exe"
   },
   "sandbox": {
-    "features": [
-      "config-data",
-      "isolated-cache-storage"
-    ],
     "services": [
-      "chromium.cast.ApplicationConfigManager",
-      "fuchsia.accessibility.semantics.SemanticsManager",
-      "fuchsia.buildinfo.Provider",
-      "fuchsia.device.NameProvider",
-      "fuchsia.feedback.ComponentDataRegister",
-      "fuchsia.feedback.CrashReportingProductRegister",
-      "fuchsia.fonts.Provider",
-      "fuchsia.hwinfo.Product",
-      "fuchsia.input.virtualkeyboard.ControllerCreator",
-      "fuchsia.intl.PropertyProvider",
-      "fuchsia.kernel.VmexResource",
-      "fuchsia.logger.LogSink",
-      "fuchsia.media.Audio",
-      "fuchsia.media.AudioDeviceEnumerator",
-      "fuchsia.media.ProfileProvider",
-      "fuchsia.media.SessionAudioConsumerFactory",
-      "fuchsia.media.drm.PlayReady",
-      "fuchsia.media.drm.Widevine",
-      "fuchsia.mediacodec.CodecFactory",
-      "fuchsia.memorypressure.Provider",
-      "fuchsia.net.interfaces.State",
-      "fuchsia.net.name.Lookup",
-      "fuchsia.posix.socket.Provider",
-      "fuchsia.process.Launcher",
-      "fuchsia.settings.Display",
-      "fuchsia.sys.Environment",
-      "fuchsia.sys.Loader",
-      "fuchsia.sys.Runner-cast",
-      "fuchsia.sysmem.Allocator",
-      "fuchsia.ui.composition.Allocator",
-      "fuchsia.ui.composition.Flatland",
-      "fuchsia.ui.input3.Keyboard",
-      "fuchsia.ui.scenic.Scenic",
-      "fuchsia.vulkan.loader.Loader"
+      "fuchsia.sys.Runner-cast"
     ]
   }
 }
diff --git a/fuchsia_web/webengine/browser/accessibility_bridge_browsertest.cc b/fuchsia_web/webengine/browser/accessibility_bridge_browsertest.cc
index 7a97b3a..40925de 100644
--- a/fuchsia_web/webengine/browser/accessibility_bridge_browsertest.cc
+++ b/fuchsia_web/webengine/browser/accessibility_bridge_browsertest.cc
@@ -882,8 +882,9 @@
   // accessibility bridge correctly composes node 2's transform and the
   // translation for node 1's bounds.
   update.nodes[1].relative_bounds.bounds = gfx::RectF(10, 11, 10, 11);
-  update.nodes[1].relative_bounds.transform = std::make_unique<gfx::Transform>(
-      5, 0, 0, 100, 0, 5, 0, 200, 0, 0, 5, 0, 0, 0, 0, 1);
+  update.nodes[1].relative_bounds.transform =
+      std::make_unique<gfx::Transform>(gfx::Transform::RowMajor(
+          5, 0, 0, 100, 0, 5, 0, 200, 0, 0, 5, 0, 0, 0, 0, 1));
   bridge->AccessibilityEventReceived(
       CreateAccessibilityEventWithUpdate(std::move(update), tree_id));
   semantics_manager_.semantic_tree()->RunUntilNodeWithLabelIsInTree(
diff --git a/fuchsia_web/webengine/browser/ax_tree_converter_unittest.cc b/fuchsia_web/webengine/browser/ax_tree_converter_unittest.cc
index fd99c39..6f23d1e 100644
--- a/fuchsia_web/webengine/browser/ax_tree_converter_unittest.cc
+++ b/fuchsia_web/webengine/browser/ax_tree_converter_unittest.cc
@@ -278,7 +278,7 @@
   ui::AXNodeData child_node_data;
   child_node_data.id = 1;
   child_node_data.relative_bounds.transform = std::make_unique<gfx::Transform>(
-      2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
+      gfx::Transform::RowMajor(2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1));
   auto& child_node = AddChildNode(child_node_data);
   root_node().SetLocation(
       kRootId,
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc
index ffb1513..2bf9d99 100644
--- a/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc
+++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc
@@ -224,10 +224,12 @@
 
   if (!pixel_data.empty()) {
     size_t stride = BitsPerPixel(format) / 8 * size.width();
-    backing->WritePixelsWithData(pixel_data, stride);
+    SkPixmap pixmap(backing->AsSkImageInfo(), pixel_data.data(), stride);
+    backing->UploadToVkImage(pixmap);
 
     // Mark the backing as cleared.
     backing->SetCleared();
+    backing->latest_content_ = kInVkImage;
   }
 
   return backing;
@@ -255,46 +257,24 @@
       context_state->vk_context_provider()->GetVulkanImplementation();
   auto resource_format = viz::GetResourceFormat(buffer_format);
   auto* device_queue = context_state->vk_context_provider()->GetDeviceQueue();
-  if (vulkan_implementation->CanImportGpuMemoryBuffer(device_queue,
-                                                      handle.type)) {
-    VkFormat vk_format = ToVkFormat(resource_format);
-    auto image = vulkan_implementation->CreateImageFromGpuMemoryHandle(
-        device_queue, std::move(handle), size, vk_format, color_space);
-    if (!image) {
-      DLOG(ERROR) << "Failed to create VkImage from GpuMemoryHandle.";
-      return nullptr;
-    }
+  DCHECK(vulkan_implementation->CanImportGpuMemoryBuffer(device_queue,
+                                                         handle.type));
 
-    bool use_separate_gl_texture =
-        UseSeparateGLTexture(context_state.get(), resource_format);
-    auto backing = std::make_unique<ExternalVkImageBacking>(
-        base::PassKey<ExternalVkImageBacking>(), mailbox, resource_format, size,
-        color_space, surface_origin, alpha_type, usage,
-        std::move(context_state), std::move(image), command_pool,
-        use_separate_gl_texture);
-    backing->SetCleared();
-    return backing;
-  }
-
-  if (gfx::NumberOfPlanesForLinearBufferFormat(buffer_format) != 1) {
-    DLOG(ERROR) << "Invalid image format.";
+  VkFormat vk_format = ToVkFormat(resource_format);
+  auto image = vulkan_implementation->CreateImageFromGpuMemoryHandle(
+      device_queue, std::move(handle), size, vk_format, color_space);
+  if (!image) {
+    DLOG(ERROR) << "Failed to create VkImage from GpuMemoryHandle.";
     return nullptr;
   }
 
-  DCHECK_EQ(handle.type, gfx::SHARED_MEMORY_BUFFER);
-
-  SharedMemoryRegionWrapper shared_memory_wrapper;
-  if (!shared_memory_wrapper.Initialize(handle, size, resource_format))
-    return nullptr;
-
-  auto backing = Create(std::move(context_state), command_pool, mailbox,
-                        resource_format, size, color_space, surface_origin,
-                        alpha_type, usage, image_usage_cache,
-                        base::span<const uint8_t>(), true /* using_gmb */);
-  if (!backing)
-    return nullptr;
-
-  backing->InstallSharedMemory(std::move(shared_memory_wrapper));
+  bool use_separate_gl_texture =
+      UseSeparateGLTexture(context_state.get(), resource_format);
+  auto backing = std::make_unique<ExternalVkImageBacking>(
+      base::PassKey<ExternalVkImageBacking>(), mailbox, resource_format, size,
+      color_space, surface_origin, alpha_type, usage, std::move(context_state),
+      std::move(image), command_pool, use_separate_gl_texture);
+  backing->SetCleared();
   return backing;
 }
 
@@ -471,7 +451,7 @@
     if (use_separate_gl_texture()) {
       latest_content_ = is_gl ? kInGLTexture : kInVkImage;
     } else {
-      latest_content_ = kInVkImage | kInGLTexture;
+      latest_content_ = kInVkImage;
     }
   }
 
@@ -514,8 +494,22 @@
 
 void ExternalVkImageBacking::Update(std::unique_ptr<gfx::GpuFence> in_fence) {
   DCHECK(!in_fence);
-  latest_content_ = kInSharedMemory;
+}
+
+bool ExternalVkImageBacking::UploadFromMemory(const SkPixmap& pixmap) {
+  if (!UploadToVkImage(pixmap))
+    return false;
+
   SetCleared();
+  latest_content_ = kInVkImage;
+
+  // Also upload to GL texture if there is a separate one.
+  if (use_separate_gl_texture() && (texture_ || texture_passthrough_)) {
+    UploadToGLTexture(pixmap);
+    latest_content_ |= kInGLTexture;
+  }
+
+  return true;
 }
 
 void ExternalVkImageBacking::AddSemaphoresToPendingListOrRelease(
@@ -773,51 +767,27 @@
       manager, this, tracker);
 }
 
-void ExternalVkImageBacking::InstallSharedMemory(
-    SharedMemoryRegionWrapper shared_memory_wrapper) {
-  DCHECK(!shared_memory_wrapper_.IsValid());
-  DCHECK(shared_memory_wrapper.IsValid());
-  shared_memory_wrapper_ = std::move(shared_memory_wrapper);
-  Update(nullptr);
-}
-
 void ExternalVkImageBacking::UpdateContent(uint32_t content_flags) {
   // Only support one backing for now.
-  DCHECK(content_flags == kInVkImage || content_flags == kInGLTexture ||
-         content_flags == kInSharedMemory);
+  DCHECK(content_flags == kInVkImage || content_flags == kInGLTexture);
+
+  // There is no need to update content when there is only one texture.
+  if (!use_separate_gl_texture())
+    return;
 
   if ((latest_content_ & content_flags) == content_flags)
     return;
 
-  if (content_flags == kInGLTexture && !use_separate_gl_texture())
-    content_flags = kInVkImage;
-
   if (content_flags == kInVkImage) {
-    if (latest_content_ & kInSharedMemory) {
-      if (!shared_memory_wrapper_.IsValid())
-        return;
-      if (!WritePixels())
-        return;
-      latest_content_ |=
-          use_separate_gl_texture() ? kInVkImage : kInVkImage | kInGLTexture;
-      return;
-    }
-    if ((latest_content_ & kInGLTexture) && use_separate_gl_texture()) {
+    if ((latest_content_ & kInGLTexture)) {
       CopyPixelsFromGLTextureToVkImage();
       latest_content_ |= kInVkImage;
-      return;
     }
   } else if (content_flags == kInGLTexture) {
-    DCHECK(use_separate_gl_texture());
-    if (latest_content_ & kInSharedMemory) {
-      CopyPixelsFromShmToGLTexture();
-    } else if (latest_content_ & kInVkImage) {
+    if (latest_content_ & kInVkImage) {
       CopyPixelsFromVkImageToGLTexture();
+      latest_content_ |= kInGLTexture;
     }
-  } else if (content_flags == kInSharedMemory) {
-    // TODO(penghuang): read pixels back from VkImage to shared memory GMB, if
-    // this feature is needed.
-    NOTIMPLEMENTED_LOG_ONCE();
   }
 }
 
@@ -1000,9 +970,7 @@
   return true;
 }
 
-bool ExternalVkImageBacking::WritePixelsWithData(
-    base::span<const uint8_t> pixel_data,
-    size_t stride) {
+bool ExternalVkImageBacking::UploadToVkImage(const SkPixmap& pixmap) {
   std::vector<ExternalSemaphore> external_semaphores;
   if (!BeginAccessInternal(false /* readonly */, &external_semaphores)) {
     DLOG(ERROR) << "BeginAccess() failed.";
@@ -1011,7 +979,6 @@
   auto* gr_context = context_state_->gr_context();
   WaitSemaphoresOnGrContext(gr_context, &external_semaphores);
 
-  SkPixmap pixmap(AsSkImageInfo(), pixel_data.data(), stride);
   if (!gr_context->updateBackendTexture(backend_texture_, &pixmap,
                                         /*numLevels=*/1, nullptr, nullptr)) {
     DLOG(ERROR) << "updateBackendTexture() failed.";
@@ -1049,11 +1016,6 @@
   return true;
 }
 
-bool ExternalVkImageBacking::WritePixels() {
-  return WritePixelsWithData(shared_memory_wrapper_.GetMemoryAsSpan(),
-                             shared_memory_wrapper_.GetStride());
-}
-
 void ExternalVkImageBacking::CopyPixelsFromGLTextureToVkImage() {
   DCHECK(use_separate_gl_texture());
   DCHECK_NE(!!texture_, !!texture_passthrough_);
@@ -1167,7 +1129,7 @@
           api, size(), gl_format, gl_type));
 }
 
-void ExternalVkImageBacking::CopyPixelsFromShmToGLTexture() {
+void ExternalVkImageBacking::UploadToGLTexture(const SkPixmap& pixmap) {
   DCHECK(use_separate_gl_texture());
   DCHECK_NE(!!texture_, !!texture_passthrough_);
   const GLuint texture_service_id =
@@ -1208,10 +1170,8 @@
   checked_size *= size().height();
   DCHECK(checked_size.IsValid());
 
-  auto pixel_data = shared_memory_wrapper_.GetMemoryAsSpan();
   api->glTexSubImage2DFn(GL_TEXTURE_2D, 0, 0, 0, size().width(),
-                         size().height(), gl_format, gl_type,
-                         pixel_data.data());
+                         size().height(), gl_format, gl_type, pixmap.addr());
   DCHECK_EQ(api->glGetErrorFn(), static_cast<GLenum>(GL_NO_ERROR));
 }
 
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing.h b/gpu/command_buffer/service/shared_image/external_vk_image_backing.h
index 38837f6..be2b0da 100644
--- a/gpu/command_buffer/service/shared_image/external_vk_image_backing.h
+++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing.h
@@ -135,6 +135,7 @@
   // SharedImageBacking implementation.
   SharedImageBackingType GetType() const override;
   void Update(std::unique_ptr<gfx::GpuFence> in_fence) override;
+  bool UploadFromMemory(const SkPixmap& pixmap) override;
   scoped_refptr<gfx::NativePixmap> GetNativePixmap() override;
 
   // Add semaphores to a pending list for reusing or being released immediately.
@@ -172,8 +173,6 @@
       MemoryTypeTracker* tracker) override;
 
  private:
-  // Install a shared memory GMB to the backing.
-  void InstallSharedMemory(SharedMemoryRegionWrapper shared_memory_wrapper);
   // Returns texture_service_id for ProduceGLTexture and GLTexturePassthrough.
   GLuint ProduceGLTextureInternal();
 
@@ -187,10 +186,9 @@
   bool ReadPixelsWithCallback(size_t data_size,
                               size_t stride,
                               ReadBufferCallback callback);
-  bool WritePixelsWithData(base::span<const uint8_t> pixel_data, size_t stride);
-  bool WritePixels();
+  bool UploadToVkImage(const SkPixmap& pixmap);
+  void UploadToGLTexture(const SkPixmap& pixmap);
   void CopyPixelsFromGLTextureToVkImage();
-  void CopyPixelsFromShmToGLTexture();
   void CopyPixelsFromVkImageToGLTexture();
 
   scoped_refptr<SharedContextState> context_state_;
@@ -208,13 +206,9 @@
   raw_ptr<gles2::Texture> texture_ = nullptr;
   scoped_refptr<gles2::TexturePassthrough> texture_passthrough_;
 
-  // GMB related stuff.
-  SharedMemoryRegionWrapper shared_memory_wrapper_;
-
   enum LatestContent {
     kInVkImage = 1 << 0,
-    kInSharedMemory = 1 << 1,
-    kInGLTexture = 1 << 2,
+    kInGLTexture = 1 << 1,
   };
   uint32_t latest_content_ = 0;
 
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc
index 7ec2e5d..49b60a9 100644
--- a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc
+++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory.cc
@@ -155,9 +155,8 @@
     gfx::GpuMemoryBufferType memory_buffer_type) {
   auto* device_queue = context_state_->vk_context_provider()->GetDeviceQueue();
   return context_state_->vk_context_provider()
-             ->GetVulkanImplementation()
-             ->CanImportGpuMemoryBuffer(device_queue, memory_buffer_type) ||
-         memory_buffer_type == gfx::SHARED_MEMORY_BUFFER;
+      ->GetVulkanImplementation()
+      ->CanImportGpuMemoryBuffer(device_queue, memory_buffer_type);
 }
 
 bool ExternalVkImageBackingFactory::IsSupported(
@@ -174,8 +173,7 @@
 
   // TODO(crbug.com/969114): Not all shared image factory implementations
   // support concurrent read/write usage.
-  constexpr uint32_t kInvalidUsages =
-      SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE | SHARED_IMAGE_USAGE_CPU_UPLOAD;
+  constexpr uint32_t kInvalidUsages = SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE;
   if (usage & kInvalidUsages) {
     return false;
   }
diff --git a/gpu/command_buffer/service/shared_image/shared_image_factory.cc b/gpu/command_buffer/service/shared_image/shared_image_factory.cc
index cee3cab..ea91d0cf 100644
--- a/gpu/command_buffer/service/shared_image/shared_image_factory.cc
+++ b/gpu/command_buffer/service/shared_image/shared_image_factory.cc
@@ -359,7 +359,17 @@
 
   bool use_compound = false;
   auto* factory = GetFactoryByUsage(usage, resource_format, size,
-                                    /*pixel_data=*/{}, gmb_type, &use_compound);
+                                    /*pixel_data=*/{}, gmb_type);
+
+  if (!factory && gmb_type == gfx::SHARED_MEMORY_BUFFER) {
+    // Check if CompoundImageBacking can hold shared memory buffer plus
+    // another GPU backing type to satisfy requirements.
+    use_compound = true;
+    factory = GetFactoryByUsage(usage | SHARED_IMAGE_USAGE_CPU_UPLOAD,
+                                resource_format, size,
+                                /*pixel_data=*/{}, gfx::EMPTY_BUFFER);
+  }
+
   if (!factory)
     return false;
 
@@ -564,8 +574,7 @@
     viz::ResourceFormat format,
     const gfx::Size& size,
     base::span<const uint8_t> pixel_data,
-    gfx::GpuMemoryBufferType gmb_type,
-    bool* use_compound_backing) {
+    gfx::GpuMemoryBufferType gmb_type) {
   if (backing_factory_for_testing_)
     return backing_factory_for_testing_;
 
@@ -574,15 +583,6 @@
     if (factory->IsSupported(usage, format, size, share_between_threads,
                              gmb_type, gr_context_type_, pixel_data)) {
       return factory.get();
-    } else if (use_compound_backing && gmb_type == gfx::SHARED_MEMORY_BUFFER) {
-      // Check if backing type supports CPU upload with no buffer handle so it
-      // can be used with a compound backing instead.
-      if (factory->IsSupported(usage | SHARED_IMAGE_USAGE_CPU_UPLOAD, format,
-                               size, share_between_threads, gfx::EMPTY_BUFFER,
-                               gr_context_type_, pixel_data)) {
-        *use_compound_backing = true;
-        return factory.get();
-      }
     }
   }
 
diff --git a/gpu/command_buffer/service/shared_image/shared_image_factory.h b/gpu/command_buffer/service/shared_image/shared_image_factory.h
index b8e9cd9..73d0df0 100644
--- a/gpu/command_buffer/service/shared_image/shared_image_factory.h
+++ b/gpu/command_buffer/service/shared_image/shared_image_factory.h
@@ -132,17 +132,12 @@
  private:
   bool IsSharedBetweenThreads(uint32_t usage);
 
-  // If `use_compound_backing` is not null and `gmb_type` is
-  // gfx::SHARED_MEMORY_BUFFER then we'll see if factory can be used with a
-  // compound backing. This is temporary until all backing types support
-  // compound backings.
   SharedImageBackingFactory* GetFactoryByUsage(
       uint32_t usage,
       viz::ResourceFormat format,
       const gfx::Size& size,
       base::span<const uint8_t> pixel_data,
-      gfx::GpuMemoryBufferType gmb_type,
-      bool* use_compound_backing = nullptr);
+      gfx::GpuMemoryBufferType gmb_type);
 
   raw_ptr<SharedImageManager> shared_image_manager_;
   raw_ptr<SharedContextState> shared_context_state_;
diff --git a/infra/config/generated/builders/ci/android-weblayer-10-x86-rel-tests/properties.json b/infra/config/generated/builders/ci/android-weblayer-10-x86-rel-tests/properties.json
deleted file mode 100644
index c24952c..0000000
--- a/infra/config/generated/builders/ci/android-weblayer-10-x86-rel-tests/properties.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-10-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-with-aosp-webview-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-with-aosp-webview-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-10-x86-rel-tests",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-weblayer-10-x86-rel-tests",
-          "group": "tryserver.chromium.android"
-        }
-      ]
-    }
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium",
-  "sheriff_rotations": [
-    "android"
-  ]
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-weblayer-11-x86-rel-tests/properties.json b/infra/config/generated/builders/ci/android-weblayer-11-x86-rel-tests/properties.json
deleted file mode 100644
index 34103b81..0000000
--- a/infra/config/generated/builders/ci/android-weblayer-11-x86-rel-tests/properties.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android.fyi",
-  "recipe": "chromium"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-weblayer-marshmallow-x86-rel-tests/properties.json b/infra/config/generated/builders/ci/android-weblayer-marshmallow-x86-rel-tests/properties.json
deleted file mode 100644
index c2fab322..0000000
--- a/infra/config/generated/builders/ci/android-weblayer-marshmallow-x86-rel-tests/properties.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-marshmallow-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-with-aosp-webview-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-with-aosp-webview-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-marshmallow-x86-rel-tests",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-weblayer-marshmallow-x86-rel-tests",
-          "group": "tryserver.chromium.android"
-        }
-      ]
-    }
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium",
-  "sheriff_rotations": [
-    "android"
-  ]
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-weblayer-oreo-x86-rel-tests/properties.json b/infra/config/generated/builders/ci/android-weblayer-oreo-x86-rel-tests/properties.json
deleted file mode 100644
index e84d34e..0000000
--- a/infra/config/generated/builders/ci/android-weblayer-oreo-x86-rel-tests/properties.json
+++ /dev/null
@@ -1,95 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-oreo-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-oreo-x86-rel-tests",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium",
-  "sheriff_rotations": [
-    "android"
-  ]
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-weblayer-pie-x86-rel-tests/properties.json b/infra/config/generated/builders/ci/android-weblayer-pie-x86-rel-tests/properties.json
deleted file mode 100644
index 5ee35103..0000000
--- a/infra/config/generated/builders/ci/android-weblayer-pie-x86-rel-tests/properties.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-pie-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-pie-x86-rel-tests",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-weblayer-pie-x86-rel-tests",
-          "group": "tryserver.chromium.android"
-        }
-      ]
-    }
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium",
-  "sheriff_rotations": [
-    "android"
-  ]
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-weblayer-with-aosp-webview-x86-fyi-rel/properties.json b/infra/config/generated/builders/ci/android-weblayer-with-aosp-webview-x86-fyi-rel/properties.json
deleted file mode 100644
index b6e2921..0000000
--- a/infra/config/generated/builders/ci/android-weblayer-with-aosp-webview-x86-fyi-rel/properties.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "$build/reclient": {
-    "instance": "rbe-chromium-trusted",
-    "jobs": 250,
-    "metrics_project": "chromium-reclient-metrics"
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android.fyi",
-  "recipe": "chromium"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-weblayer-with-aosp-webview-x86-rel/properties.json b/infra/config/generated/builders/ci/android-weblayer-with-aosp-webview-x86-rel/properties.json
deleted file mode 100644
index b5ec3f7..0000000
--- a/infra/config/generated/builders/ci/android-weblayer-with-aosp-webview-x86-rel/properties.json
+++ /dev/null
@@ -1,159 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-10-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-with-aosp-webview-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-marshmallow-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-with-aosp-webview-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-with-aosp-webview-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-with-aosp-webview-x86-rel",
-          "project": "chromium"
-        }
-      ],
-      "builder_ids_in_scope_for_testing": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-10-x86-rel-tests",
-          "project": "chromium"
-        },
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-marshmallow-x86-rel-tests",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-weblayer-10-x86-rel-tests",
-          "group": "tryserver.chromium.android"
-        },
-        {
-          "builder": "android-weblayer-marshmallow-x86-rel-tests",
-          "group": "tryserver.chromium.android"
-        }
-      ]
-    }
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "jobs": 150,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium",
-  "sheriff_rotations": [
-    "android"
-  ]
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-weblayer-x86-rel/properties.json b/infra/config/generated/builders/ci/android-weblayer-x86-rel/properties.json
deleted file mode 100644
index ddd172c..0000000
--- a/infra/config/generated/builders/ci/android-weblayer-x86-rel/properties.json
+++ /dev/null
@@ -1,155 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-oreo-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-pie-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-x86-rel",
-          "project": "chromium"
-        }
-      ],
-      "builder_ids_in_scope_for_testing": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-oreo-x86-rel-tests",
-          "project": "chromium"
-        },
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-pie-x86-rel-tests",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-weblayer-pie-x86-rel-tests",
-          "group": "tryserver.chromium.android"
-        }
-      ]
-    }
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "jobs": 150,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium",
-  "sheriff_rotations": [
-    "android"
-  ]
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-opus-arm-rel/properties.json b/infra/config/generated/builders/try/android-opus-arm-rel/properties.json
deleted file mode 100644
index d90599c..0000000
--- a/infra/config/generated/builders/try/android-opus-arm-rel/properties.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "$build/goma": {
-    "enable_ats": true,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium_trybot"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-weblayer-10-x86-rel-tests/properties.json b/infra/config/generated/builders/try/android-weblayer-10-x86-rel-tests/properties.json
deleted file mode 100644
index d59dbf39..0000000
--- a/infra/config/generated/builders/try/android-weblayer-10-x86-rel-tests/properties.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-10-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-with-aosp-webview-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-with-aosp-webview-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-with-aosp-webview-x86-rel",
-          "project": "chromium"
-        }
-      ],
-      "builder_ids_in_scope_for_testing": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-10-x86-rel-tests",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium_trybot"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-weblayer-marshmallow-x86-rel-tests/properties.json b/infra/config/generated/builders/try/android-weblayer-marshmallow-x86-rel-tests/properties.json
deleted file mode 100644
index e2db95c0..0000000
--- a/infra/config/generated/builders/try/android-weblayer-marshmallow-x86-rel-tests/properties.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-marshmallow-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-with-aosp-webview-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-with-aosp-webview-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-with-aosp-webview-x86-rel",
-          "project": "chromium"
-        }
-      ],
-      "builder_ids_in_scope_for_testing": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-marshmallow-x86-rel-tests",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium_trybot"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-weblayer-pie-x86-rel-tests/properties.json b/infra/config/generated/builders/try/android-weblayer-pie-x86-rel-tests/properties.json
deleted file mode 100644
index 0e3b1450..0000000
--- a/infra/config/generated/builders/try/android-weblayer-pie-x86-rel-tests/properties.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-pie-x86-rel-tests",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android"
-                ],
-                "config": "chromium"
-              },
-              "parent": {
-                "bucket": "ci",
-                "builder": "android-weblayer-x86-rel",
-                "project": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-weblayer-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-x86-rel",
-          "project": "chromium"
-        }
-      ],
-      "builder_ids_in_scope_for_testing": [
-        {
-          "bucket": "ci",
-          "builder": "android-weblayer-pie-x86-rel-tests",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium_trybot"
-}
\ No newline at end of file
diff --git a/infra/config/generated/luci/commit-queue.cfg b/infra/config/generated/luci/commit-queue.cfg
index 596280ea..3c3fd75 100644
--- a/infra/config/generated/luci/commit-queue.cfg
+++ b/infra/config/generated/luci/commit-queue.cfg
@@ -672,10 +672,6 @@
         includable_only: true
       }
       builders {
-        name: "chromium/try/android-opus-arm-rel"
-        includable_only: true
-      }
-      builders {
         name: "chromium/try/android-oreo-arm64-cts-networkservice-dbg"
         includable_only: true
       }
@@ -840,18 +836,6 @@
         includable_only: true
       }
       builders {
-        name: "chromium/try/android-weblayer-10-x86-rel-tests"
-        includable_only: true
-      }
-      builders {
-        name: "chromium/try/android-weblayer-marshmallow-x86-rel-tests"
-        includable_only: true
-      }
-      builders {
-        name: "chromium/try/android-weblayer-pie-x86-rel-tests"
-        includable_only: true
-      }
-      builders {
         name: "chromium/try/android-weblayer-pie-x86-wpt-fyi-rel"
         includable_only: true
       }
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg
index f124428..19a449e 100644
--- a/infra/config/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -28660,419 +28660,6 @@
       }
     }
     builders {
-      name: "android-weblayer-10-x86-rel-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-weblayer-10-x86-rel-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium",'
-        '  "sheriff_rotations": ['
-        '    "android"'
-        '  ]'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-weblayer-11-x86-rel-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-weblayer-11-x86-rel-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android.fyi",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      priority: 35
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-weblayer-marshmallow-x86-rel-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-weblayer-marshmallow-x86-rel-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium",'
-        '  "sheriff_rotations": ['
-        '    "android"'
-        '  ]'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-weblayer-oreo-x86-rel-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-weblayer-oreo-x86-rel-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium",'
-        '  "sheriff_rotations": ['
-        '    "android"'
-        '  ]'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-weblayer-pie-x86-rel-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-weblayer-pie-x86-rel-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium",'
-        '  "sheriff_rotations": ['
-        '    "android"'
-        '  ]'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
       name: "android-weblayer-pie-x86-wpt-fyi-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -29235,253 +28822,6 @@
       }
     }
     builders {
-      name: "android-weblayer-with-aosp-webview-x86-fyi-rel"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-weblayer-with-aosp-webview-x86-fyi-rel/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android.fyi",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      priority: 35
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-weblayer-with-aosp-webview-x86-rel"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-weblayer-with-aosp-webview-x86-rel/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium",'
-        '  "sheriff_rotations": ['
-        '    "android"'
-        '  ]'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-weblayer-x86-rel"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-weblayer-x86-rel/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium",'
-        '  "sheriff_rotations": ['
-        '    "android"'
-        '  ]'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
       name: "android-webview-10-x86-rel-tests"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -56489,100 +55829,6 @@
       }
     }
     builders {
-      name: "android-opus-arm-rel"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-opus-arm-rel/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium_trybot"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 10
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
       name: "android-oreo-arm64-cts-networkservice-dbg"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -57822,288 +57068,6 @@
       }
     }
     builders {
-      name: "android-weblayer-10-x86-rel-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-weblayer-10-x86-rel-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium_trybot"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 10
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-weblayer-marshmallow-x86-rel-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-weblayer-marshmallow-x86-rel-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium_trybot"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 10
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-weblayer-pie-x86-rel-tests"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-weblayer-pie-x86-rel-tests/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium_trybot"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 10
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
       name: "android-weblayer-pie-x86-wpt-fyi-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
diff --git a/infra/config/generated/luci/luci-milo.cfg b/infra/config/generated/luci/luci-milo.cfg
index 84fe3bb..c702120 100644
--- a/infra/config/generated/luci/luci-milo.cfg
+++ b/infra/config/generated/luci/luci-milo.cfg
@@ -4130,16 +4130,6 @@
     short_name: "size"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/android-weblayer-x86-rel"
-    category: "builder|weblayer"
-    short_name: "x86"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/android-weblayer-with-aosp-webview-x86-rel"
-    category: "builder|weblayer_with_aosp_webview"
-    short_name: "x86"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/Marshmallow 64 bit Tester"
     category: "tester|phone"
     short_name: "M"
@@ -4170,26 +4160,6 @@
     short_name: "M"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/android-weblayer-10-x86-rel-tests"
-    category: "tester|weblayer"
-    short_name: "10"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/android-weblayer-marshmallow-x86-rel-tests"
-    category: "tester|weblayer"
-    short_name: "M"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/android-weblayer-oreo-x86-rel-tests"
-    category: "tester|weblayer"
-    short_name: "O"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/android-weblayer-pie-x86-rel-tests"
-    category: "tester|weblayer"
-    short_name: "P"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/Android WebView M (dbg)"
     category: "tester|webview"
     short_name: "M"
@@ -4615,11 +4585,6 @@
     short_name: "san"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/android-weblayer-with-aosp-webview-x86-fyi-rel"
-    category: "builder|weblayer_with_aosp_webview"
-    short_name: "x86"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/android-cronet-asan-x86-rel"
     category: "cronet|asan"
   }
@@ -4659,11 +4624,6 @@
     short_name: "12"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/android-weblayer-11-x86-rel-tests"
-    category: "tester|weblayer"
-    short_name: "11"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/android-webview-12-x64-dbg-tests"
     category: "tester|webview"
     short_name: "12"
@@ -16642,9 +16602,6 @@
     name: "buildbucket/luci.chromium.try/android-official"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-opus-arm-rel"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-oreo-arm64-cts-networkservice-dbg"
   }
   builders {
@@ -16684,15 +16641,6 @@
     name: "buildbucket/luci.chromium.try/android-rust-arm-rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-weblayer-10-x86-rel-tests"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-weblayer-marshmallow-x86-rel-tests"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-weblayer-pie-x86-rel-tests"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-weblayer-pie-x86-wpt-fyi-rel"
   }
   builders {
@@ -17829,9 +17777,6 @@
     name: "buildbucket/luci.chromium.try/android-nougat-x86-rel-compilator"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-opus-arm-rel"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-oreo-arm64-cts-networkservice-dbg"
   }
   builders {
@@ -17865,15 +17810,6 @@
     name: "buildbucket/luci.chromium.try/android-pie-x86-rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-weblayer-10-x86-rel-tests"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-weblayer-marshmallow-x86-rel-tests"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-weblayer-pie-x86-rel-tests"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-weblayer-pie-x86-wpt-fyi-rel"
   }
   builders {
diff --git a/infra/config/generated/luci/luci-notify.cfg b/infra/config/generated/luci/luci-notify.cfg
index cd6df5aac..1bd65317 100644
--- a/infra/config/generated/luci/luci-notify.cfg
+++ b/infra/config/generated/luci/luci-notify.cfg
@@ -2533,66 +2533,6 @@
 }
 notifiers {
   notifications {
-    on_new_status: FAILURE
-    email {
-      recipients: "weblayer-sheriff@grotations.appspotmail.com"
-    }
-  }
-  builders {
-    bucket: "ci"
-    name: "android-weblayer-10-x86-rel-tests"
-  }
-}
-notifiers {
-  notifications {
-    on_new_status: FAILURE
-    email {
-      recipients: "weblayer-sheriff@grotations.appspotmail.com"
-    }
-  }
-  builders {
-    bucket: "ci"
-    name: "android-weblayer-11-x86-rel-tests"
-  }
-}
-notifiers {
-  notifications {
-    on_new_status: FAILURE
-    email {
-      recipients: "weblayer-sheriff@grotations.appspotmail.com"
-    }
-  }
-  builders {
-    bucket: "ci"
-    name: "android-weblayer-marshmallow-x86-rel-tests"
-  }
-}
-notifiers {
-  notifications {
-    on_new_status: FAILURE
-    email {
-      recipients: "weblayer-sheriff@grotations.appspotmail.com"
-    }
-  }
-  builders {
-    bucket: "ci"
-    name: "android-weblayer-oreo-x86-rel-tests"
-  }
-}
-notifiers {
-  notifications {
-    on_new_status: FAILURE
-    email {
-      recipients: "weblayer-sheriff@grotations.appspotmail.com"
-    }
-  }
-  builders {
-    bucket: "ci"
-    name: "android-weblayer-pie-x86-rel-tests"
-  }
-}
-notifiers {
-  notifications {
     on_occurrence: FAILURE
     failed_step_regexp: "\\b(bot_update|compile|gclient runhooks|runhooks|update|\\w*nocompile_test)\\b"
     email {
diff --git a/infra/config/generated/luci/luci-scheduler.cfg b/infra/config/generated/luci/luci-scheduler.cfg
index 3c11517a..9983e9d 100644
--- a/infra/config/generated/luci/luci-scheduler.cfg
+++ b/infra/config/generated/luci/luci-scheduler.cfg
@@ -4911,76 +4911,6 @@
   }
 }
 job {
-  id: "android-weblayer-10-x86-rel-tests"
-  realm: "ci"
-  acls {
-    role: TRIGGERER
-    granted_to: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-  }
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-weblayer-10-x86-rel-tests"
-  }
-}
-job {
-  id: "android-weblayer-11-x86-rel-tests"
-  realm: "ci"
-  acls {
-    role: TRIGGERER
-    granted_to: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-  }
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-weblayer-11-x86-rel-tests"
-  }
-}
-job {
-  id: "android-weblayer-marshmallow-x86-rel-tests"
-  realm: "ci"
-  acls {
-    role: TRIGGERER
-    granted_to: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-  }
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-weblayer-marshmallow-x86-rel-tests"
-  }
-}
-job {
-  id: "android-weblayer-oreo-x86-rel-tests"
-  realm: "ci"
-  acls {
-    role: TRIGGERER
-    granted_to: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-  }
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-weblayer-oreo-x86-rel-tests"
-  }
-}
-job {
-  id: "android-weblayer-pie-x86-rel-tests"
-  realm: "ci"
-  acls {
-    role: TRIGGERER
-    granted_to: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-  }
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-weblayer-pie-x86-rel-tests"
-  }
-}
-job {
   id: "android-weblayer-pie-x86-wpt-fyi-rel"
   realm: "ci"
   acl_sets: "ci"
@@ -5001,36 +4931,6 @@
   }
 }
 job {
-  id: "android-weblayer-with-aosp-webview-x86-fyi-rel"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-weblayer-with-aosp-webview-x86-fyi-rel"
-  }
-}
-job {
-  id: "android-weblayer-with-aosp-webview-x86-rel"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-weblayer-with-aosp-webview-x86-rel"
-  }
-}
-job {
-  id: "android-weblayer-x86-rel"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-weblayer-x86-rel"
-  }
-}
-job {
   id: "android-webview-10-x86-rel-tests"
   realm: "ci"
   acls {
@@ -7714,9 +7614,6 @@
   triggers: "android-rust-arm-rel"
   triggers: "android-weblayer-pie-x86-wpt-fyi-rel"
   triggers: "android-weblayer-pie-x86-wpt-smoketest"
-  triggers: "android-weblayer-with-aosp-webview-x86-fyi-rel"
-  triggers: "android-weblayer-with-aosp-webview-x86-rel"
-  triggers: "android-weblayer-x86-rel"
   triggers: "android-webview-pie-x86-wpt-fyi-rel"
   triggers: "android-x86-rel"
   triggers: "build-perf-android"
diff --git a/infra/config/generated/luci/realms.cfg b/infra/config/generated/luci/realms.cfg
index f3e81ab..24bb89a 100644
--- a/infra/config/generated/luci/realms.cfg
+++ b/infra/config/generated/luci/realms.cfg
@@ -175,11 +175,6 @@
         values: "android-cronet-x86-dbg-pie-tests"
         values: "android-cronet-x86-rel-kitkat-tests"
         values: "android-pie-arm64-dbg"
-        values: "android-weblayer-10-x86-rel-tests"
-        values: "android-weblayer-11-x86-rel-tests"
-        values: "android-weblayer-marshmallow-x86-rel-tests"
-        values: "android-weblayer-oreo-x86-rel-tests"
-        values: "android-weblayer-pie-x86-rel-tests"
         values: "android-webview-10-x86-rel-tests"
         values: "android-webview-12-x64-dbg-tests"
         values: "linux-lacros-dbg-tests-fyi"
diff --git a/infra/config/generated/sheriff-rotations/android.txt b/infra/config/generated/sheriff-rotations/android.txt
index 6663d420..fb6df596 100644
--- a/infra/config/generated/sheriff-rotations/android.txt
+++ b/infra/config/generated/sheriff-rotations/android.txt
@@ -26,11 +26,5 @@
 ci/android-pie-arm64-dbg
 ci/android-pie-arm64-rel
 ci/android-pie-x86-rel
-ci/android-weblayer-10-x86-rel-tests
-ci/android-weblayer-marshmallow-x86-rel-tests
-ci/android-weblayer-oreo-x86-rel-tests
-ci/android-weblayer-pie-x86-rel-tests
-ci/android-weblayer-with-aosp-webview-x86-rel
-ci/android-weblayer-x86-rel
 ci/android-webview-10-x86-rel-tests
 ci/android-x86-rel
diff --git a/infra/config/subprojects/chromium/ci/chromium.android.fyi.star b/infra/config/subprojects/chromium/ci/chromium.android.fyi.star
index 6dbcedb..00b2b58 100644
--- a/infra/config/subprojects/chromium/ci/chromium.android.fyi.star
+++ b/infra/config/subprojects/chromium/ci/chromium.android.fyi.star
@@ -59,16 +59,6 @@
     ),
 )
 
-ci.thin_tester(
-    name = "android-weblayer-11-x86-rel-tests",
-    console_view_entry = consoles.console_view_entry(
-        category = "tester|weblayer",
-        short_name = "11",
-    ),
-    triggered_by = ["android-weblayer-with-aosp-webview-x86-fyi-rel"],
-    notifies = ["weblayer-sheriff"],
-)
-
 ci.builder(
     name = "android-weblayer-pie-x86-wpt-fyi-rel",
     console_view_entry = consoles.console_view_entry(
@@ -94,14 +84,6 @@
 )
 
 ci.builder(
-    name = "android-weblayer-with-aosp-webview-x86-fyi-rel",
-    console_view_entry = consoles.console_view_entry(
-        category = "builder|weblayer_with_aosp_webview",
-        short_name = "x86",
-    ),
-)
-
-ci.builder(
     name = "android-marshmallow-x86-fyi-rel-reviver",
     console_view_entry = consoles.console_view_entry(
         category = "reviver",
diff --git a/infra/config/subprojects/chromium/ci/chromium.android.star b/infra/config/subprojects/chromium/ci/chromium.android.star
index e355086b..bc041ca 100644
--- a/infra/config/subprojects/chromium/ci/chromium.android.star
+++ b/infra/config/subprojects/chromium/ci/chromium.android.star
@@ -1510,197 +1510,3 @@
     # stable.
     sheriff_rotations = args.ignore_default(None),
 )
-
-ci.thin_tester(
-    name = "android-weblayer-10-x86-rel-tests",
-    builder_spec = builder_config.builder_spec(
-        execution_mode = builder_config.execution_mode.TEST,
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 32,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "x86_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "tester|weblayer",
-        short_name = "10",
-    ),
-    triggered_by = ["android-weblayer-with-aosp-webview-x86-rel"],
-    notifies = ["weblayer-sheriff"],
-)
-
-ci.thin_tester(
-    name = "android-weblayer-marshmallow-x86-rel-tests",
-    builder_spec = builder_config.builder_spec(
-        execution_mode = builder_config.execution_mode.TEST,
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 32,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "x86_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "tester|weblayer",
-        short_name = "M",
-    ),
-    triggered_by = ["android-weblayer-with-aosp-webview-x86-rel"],
-    notifies = ["weblayer-sheriff"],
-)
-
-ci.thin_tester(
-    name = "android-weblayer-oreo-x86-rel-tests",
-    builder_spec = builder_config.builder_spec(
-        execution_mode = builder_config.execution_mode.TEST,
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 32,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "x86_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "tester|weblayer",
-        short_name = "O",
-    ),
-    triggered_by = ["android-weblayer-x86-rel"],
-    notifies = ["weblayer-sheriff"],
-)
-
-ci.thin_tester(
-    name = "android-weblayer-pie-x86-rel-tests",
-    builder_spec = builder_config.builder_spec(
-        execution_mode = builder_config.execution_mode.TEST,
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 32,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "x86_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "tester|weblayer",
-        short_name = "P",
-    ),
-    triggered_by = ["android-weblayer-x86-rel"],
-    notifies = ["weblayer-sheriff"],
-)
-
-ci.builder(
-    name = "android-weblayer-with-aosp-webview-x86-rel",
-    builder_spec = builder_config.builder_spec(
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-                "enable_reclient",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 32,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "x86_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "builder|weblayer_with_aosp_webview",
-        short_name = "x86",
-    ),
-    goma_backend = goma.backend.RBE_PROD,
-    goma_jobs = goma.jobs.J150,
-    reclient_instance = None,
-)
-
-ci.builder(
-    name = "android-weblayer-x86-rel",
-    builder_spec = builder_config.builder_spec(
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-                "enable_reclient",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 32,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "x86_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "builder|weblayer",
-        short_name = "x86",
-    ),
-    goma_backend = goma.backend.RBE_PROD,
-    goma_jobs = goma.jobs.J150,
-    reclient_instance = None,
-)
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
index 25ee931..0c2507a 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
@@ -396,10 +396,6 @@
 )
 
 try_.builder(
-    name = "android-opus-arm-rel",
-)
-
-try_.builder(
     name = "android-oreo-arm64-cts-networkservice-dbg",
 )
 
@@ -536,30 +532,6 @@
 )
 
 try_.builder(
-    name = "android-weblayer-10-x86-rel-tests",
-    mirrors = [
-        "ci/android-weblayer-with-aosp-webview-x86-rel",
-        "ci/android-weblayer-10-x86-rel-tests",
-    ],
-)
-
-try_.builder(
-    name = "android-weblayer-marshmallow-x86-rel-tests",
-    mirrors = [
-        "ci/android-weblayer-with-aosp-webview-x86-rel",
-        "ci/android-weblayer-marshmallow-x86-rel-tests",
-    ],
-)
-
-try_.builder(
-    name = "android-weblayer-pie-x86-rel-tests",
-    mirrors = [
-        "ci/android-weblayer-x86-rel",
-        "ci/android-weblayer-pie-x86-rel-tests",
-    ],
-)
-
-try_.builder(
     name = "android-weblayer-pie-x86-wpt-fyi-rel",
 )
 
diff --git a/ios/chrome/browser/first_run/first_run_metrics.h b/ios/chrome/browser/first_run/first_run_metrics.h
index e132ab0..30d8fdb 100644
--- a/ios/chrome/browser/first_run/first_run_metrics.h
+++ b/ios/chrome/browser/first_run/first_run_metrics.h
@@ -110,9 +110,15 @@
   kWelcomeAndSigninScreenCompletionWithSignIn = 13,
   // Welcome+SignIn screen is closed without sign in.
   kWelcomeAndSigninScreenCompletionWithoutSignIn = 14,
+  // Sync screen is shown.
+  kTangibleSyncScreenStart = 15,
+  // Sync screen is closed with sync.
+  kTangibleSyncScreenCompletionWithSync = 16,
+  // Sync screen is closed without sync.
+  kTangibleSyncScreenCompletionWithoutSync = 17,
   // Max value of the first run experience stages.
   // kMaxValue should share the value of the highest enumerator.
-  kMaxValue = kWelcomeAndSigninScreenCompletionWithoutSignIn,
+  kMaxValue = kTangibleSyncScreenCompletionWithoutSync,
 };
 
 // The different type of screens of the first run experience. This is mapped to
@@ -149,6 +155,8 @@
   kWelcomeScreenWithoutUMACheckbox,
   // Welcome screen with UMA checkbox. Displayed when MICe is disabled.
   kWelcomeScreenWithUMACheckbox,
+  // The tangible sync screen that asks the user to turn on sync.
+  kTangibleSyncScreen,
 };
 
 }  // namespace first_run
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm
index b8165d3..c24ead98 100644
--- a/ios/chrome/browser/flags/about_flags.mm
+++ b/ios/chrome/browser/flags/about_flags.mm
@@ -1253,6 +1253,9 @@
      flag_descriptions::kTFLiteLanguageDetectionIgnoreDescription,
      flags_ui::kOsIos,
      FEATURE_VALUE_TYPE(translate::kTFLiteLanguageDetectionIgnoreEnabled)},
+    {"disable-feed-ios14", flag_descriptions::kDisableFeediOS14Name,
+     flag_descriptions::kDisableFeediOS14Description, flags_ui::kOsIos,
+     FEATURE_VALUE_TYPE(kDisableFeediOS14)},
 };
 
 bool SkipConditionalFeatureEntry(const flags_ui::FeatureEntry& entry) {
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
index 935b59a..f9e4d91 100644
--- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
+++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
@@ -286,6 +286,10 @@
 const char kEnableFeedAblationDescription[] =
     "If Enabled the Feed will be removed from the NTP";
 
+const char kDisableFeediOS14Name[] = "Disable the feed on iOS14 devices";
+const char kDisableFeediOS14Description[] =
+    "If disabled the feed will be removed from the iOS14 devices.";
+
 const char kEnableFREUIModuleIOSName[] = "Enable FRE UI module";
 const char kEnableFREUIModuleIOSDescription[] =
     "Use the new FRE UI module for first run.";
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
index c518aee3..996d4f3 100644
--- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
+++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
@@ -262,6 +262,10 @@
 extern const char kEnableFeedAblationName[];
 extern const char kEnableFeedAblationDescription[];
 
+// Title and description for the flag to remove the Feed from iOS14 devices.
+extern const char kDisableFeediOS14Name[];
+extern const char kDisableFeediOS14Description[];
+
 // Title and description for the flag to test the FRE default browser promo
 // experiment.
 extern const char kEnableFREDefaultBrowserPromoScreenName[];
diff --git a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm b/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm
index bda7f2a..4dac6d1 100644
--- a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm
+++ b/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm
@@ -38,7 +38,6 @@
 #import "components/metrics/drive_metrics_provider.h"
 #import "components/metrics/entropy_state_provider.h"
 #import "components/metrics/field_trials_provider.h"
-#import "components/metrics/form_factor_metrics_provider.h"
 #import "components/metrics/metrics_data_validation.h"
 #import "components/metrics/metrics_log_uploader.h"
 #import "components/metrics/metrics_pref_names.h"
@@ -50,6 +49,7 @@
 #import "components/metrics/net/network_metrics_provider.h"
 #import "components/metrics/persistent_histograms.h"
 #import "components/metrics/stability_metrics_helper.h"
+#import "components/metrics/ui/form_factor_metrics_provider.h"
 #import "components/metrics/ui/screen_info_metrics_provider.h"
 #import "components/metrics/url_constants.h"
 #import "components/metrics/version_utils.h"
diff --git a/ios/chrome/browser/providers/lens/chromium_lens.mm b/ios/chrome/browser/providers/lens/chromium_lens.mm
index ed285cf..c95bb15 100644
--- a/ios/chrome/browser/providers/lens/chromium_lens.mm
+++ b/ios/chrome/browser/providers/lens/chromium_lens.mm
@@ -41,6 +41,11 @@
   return false;
 }
 
+bool IsLensWebResultsURL(const GURL& url) {
+  // Lens is not supported in Chromium.
+  return false;
+}
+
 web::NavigationManager::WebLoadParams GenerateLensLoadParamsForImage(
     UIImage* image,
     LensEntrypoint entry_point,
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/BUILD.gn b/ios/chrome/browser/ui/authentication/tangible_sync/BUILD.gn
index c20f2f2..81151fd 100644
--- a/ios/chrome/browser/ui/authentication/tangible_sync/BUILD.gn
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/BUILD.gn
@@ -11,14 +11,28 @@
     "tangible_sync_coordinator.mm",
     "tangible_sync_mediator.h",
     "tangible_sync_mediator.mm",
+    "tangible_sync_mediator_delegate.h",
   ]
   deps = [
     ":signin_ui",
     "//base",
+    "//components/consent_auditor",
+    "//components/sync/driver",
+    "//components/unified_consent",
+    "//ios/chrome/app/application_delegate:app_state_header",
     "//ios/chrome/browser/browser_state",
+    "//ios/chrome/browser/consent_auditor",
+    "//ios/chrome/browser/first_run",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/signin",
     "//ios/chrome/browser/signin:constants",
+    "//ios/chrome/browser/sync",
+    "//ios/chrome/browser/ui/authentication",
+    "//ios/chrome/browser/ui/authentication/signin",
+    "//ios/chrome/browser/ui/commands",
+    "//ios/chrome/browser/ui/first_run:utils",
+    "//ios/chrome/browser/ui/main:scene_state_header",
+    "//ios/chrome/browser/unified_consent",
   ]
   public_deps =
       [ "//ios/chrome/browser/ui/first_run:interruptible_chrome_coordinator" ]
@@ -30,14 +44,18 @@
     "tangible_sync_consumer.h",
     "tangible_sync_view_controller.h",
     "tangible_sync_view_controller.mm",
+    "tangible_sync_view_controller_delegate.h",
   ]
   deps = [
     "//ios/chrome/app/strings",
+    "//ios/chrome/browser/ui/authentication",
     "//ios/chrome/browser/ui/authentication/tangible_sync/resources:tangible_sync_autofill",
     "//ios/chrome/browser/ui/authentication/tangible_sync/resources:tangible_sync_bookmarks",
     "//ios/chrome/browser/ui/authentication/tangible_sync/resources:tangible_sync_history",
     "//ios/chrome/browser/ui/elements",
+    "//ios/chrome/browser/ui/elements:elements_internal",
     "//ios/chrome/common/ui/promo_style",
+    "//ios/chrome/common/ui/util",
     "//net",
     "//ui/base",
     "//url",
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_consumer.h b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_consumer.h
index 280e151..a2cce0c33 100644
--- a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_consumer.h
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_consumer.h
@@ -13,6 +13,9 @@
 // Avatar image for the primary identity.
 @property(nonatomic, strong) UIImage* primaryIdentityAvatarImage;
 
+// Sets the UI as interactable or not.
+- (void)setUIEnabled:(BOOL)UIEnabled;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_CONSUMER_H_
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.mm b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.mm
index 04dd966a..ca672b38 100644
--- a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.mm
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.mm
@@ -4,22 +4,53 @@
 
 #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.h"
 
+#import "base/metrics/histogram_functions.h"
+#import "components/sync/driver/sync_service.h"
+#import "ios/chrome/app/application_delegate/app_state.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#import "ios/chrome/browser/consent_auditor/consent_auditor_factory.h"
+#import "ios/chrome/browser/first_run/first_run_metrics.h"
 #import "ios/chrome/browser/main/browser.h"
+#import "ios/chrome/browser/signin/authentication_service.h"
 #import "ios/chrome/browser/signin/authentication_service_factory.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service_factory.h"
+#import "ios/chrome/browser/signin/identity_manager_factory.h"
+#import "ios/chrome/browser/sync/sync_service_factory.h"
+#import "ios/chrome/browser/sync/sync_setup_service_factory.h"
+#import "ios/chrome/browser/ui/authentication/authentication_flow.h"
+#import "ios/chrome/browser/ui/authentication/signin/signin_coordinator.h"
 #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.h"
+#import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator_delegate.h"
 #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.h"
+#import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller_delegate.h"
+#import "ios/chrome/browser/ui/commands/browsing_data_commands.h"
+#import "ios/chrome/browser/ui/commands/command_dispatcher.h"
+#import "ios/chrome/browser/ui/first_run/first_run_util.h"
+#import "ios/chrome/browser/ui/main/scene_state.h"
+#import "ios/chrome/browser/ui/main/scene_state_browser_agent.h"
+#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
+@interface TangibleSyncCoordinator () <TangibleSyncMediatorDelegate,
+                                       TangibleSyncViewControllerDelegate>
+@end
+
 @implementation TangibleSyncCoordinator {
   // Tangible mediator.
   TangibleSyncMediator* _mediator;
   // Tangible view controller.
   TangibleSyncViewController* _viewController;
+  // Whether the user requested the advanced settings when starting the sync.
+  BOOL _advancedSettingsRequested;
+  // Coordinator that handles the advanced settings sign-in UI.
+  SigninCoordinator* _advancedSettingsSigninCoordinator;
+  // The consent string ids of texts on the sync screen.
+  NSMutableArray* _consentStringIDs;
+  // `YES` if coordinator used during the first run.
+  BOOL _firstRun;
 }
 
 @synthesize baseNavigationController = _baseNavigationController;
@@ -32,23 +63,44 @@
   if (self) {
     DCHECK(!browser->GetBrowserState()->IsOffTheRecord());
     _baseNavigationController = navigationController;
+    _consentStringIDs = [NSMutableArray array];
   }
   return self;
 }
 
 - (void)start {
   [super start];
+  // Determine if it is currently in the First Run context.
+  SceneState* sceneState =
+      SceneStateBrowserAgent::FromBrowser(self.browser)->GetSceneState();
+  AppState* appState = sceneState.appState;
+  _firstRun = appState.initStage == InitStageFirstRun;
   _viewController = [[TangibleSyncViewController alloc] init];
+  _viewController.delegate = self;
   ChromeBrowserState* browserState = self.browser->GetBrowserState();
   AuthenticationService* authenticationService =
       AuthenticationServiceFactory::GetForBrowserState(browserState);
   ChromeAccountManagerService* chromeAccountManagerService =
-      ChromeAccountManagerServiceFactory::GetForBrowserState(
-          self.browser->GetBrowserState());
+      ChromeAccountManagerServiceFactory::GetForBrowserState(browserState);
   _mediator = [[TangibleSyncMediator alloc]
       initWithAuthenticationService:authenticationService
-        chromeAccountManagerService:chromeAccountManagerService];
+        chromeAccountManagerService:chromeAccountManagerService
+                     consentAuditor:ConsentAuditorFactory::GetForBrowserState(
+                                        browserState)
+                    identityManager:IdentityManagerFactory::GetForBrowserState(
+                                        browserState)
+                        syncService:SyncServiceFactory::GetForBrowserState(
+                                        browserState)
+                   syncSetupService:SyncSetupServiceFactory::GetForBrowserState(
+                                        browserState)
+              unifiedConsentService:UnifiedConsentServiceFactory::
+                                        GetForBrowserState(browserState)];
   _mediator.consumer = _viewController;
+  _mediator.delegate = self;
+  if (_firstRun) {
+    base::UmaHistogramEnumeration("FirstRun.Stage",
+                                  first_run::kTangibleSyncScreenStart);
+  }
   BOOL animated = self.baseNavigationController.topViewController != nil;
   [self.baseNavigationController setViewControllers:@[ _viewController ]
                                            animated:animated];
@@ -61,4 +113,126 @@
   _viewController = nil;
 }
 
+#pragma mark - TangibleSyncMediatorDelegate
+
+- (void)tangibleSyncMediatorDidSuccessfulyFinishSignin:
+    (TangibleSyncMediator*)mediator {
+  if (_advancedSettingsRequested) {
+    // TODO(crbug.com/1256784): Log a UserActions histogram to track the touch
+    // interactions on the advanced settings button.
+    [self showAdvancedSettings];
+  } else {
+    if (_firstRun) {
+      base::UmaHistogramEnumeration(
+          "FirstRun.Stage", first_run::kTangibleSyncScreenCompletionWithSync);
+    }
+    DCHECK(self.coordinatorCompleted);
+    self.coordinatorCompleted(YES);
+    self.coordinatorCompleted = nil;
+  }
+}
+
+- (void)tangibleSyncMediatorUserRemoved:(TangibleSyncMediator*)mediator {
+  DCHECK(self.coordinatorCompleted);
+  self.coordinatorCompleted(NO);
+  self.coordinatorCompleted = nil;
+}
+
+#pragma mark - TangibleSyncViewControllerDelegate
+
+- (void)didTapPrimaryActionButton {
+  [self startSyncOrAdvancedSettings:NO];
+}
+
+- (void)didTapSecondaryActionButton {
+  if (_firstRun) {
+    base::UmaHistogramEnumeration(
+        "FirstRun.Stage", first_run::kTangibleSyncScreenCompletionWithoutSync);
+  }
+  syncer::SyncService* syncService =
+      SyncServiceFactory::GetForBrowserState(self.browser->GetBrowserState());
+  // Call StopAndClear() to clear the encryption passphrase, in case the
+  // user entered it before canceling the sync opt-in flow, and also to set
+  // sync as requested.
+  syncService->StopAndClear();
+  DCHECK(self.coordinatorCompleted);
+  self.coordinatorCompleted(NO);
+  self.coordinatorCompleted = nil;
+}
+
+- (void)didTapURLInDisclaimer:(NSURL*)URL {
+  // Currently there is only one link to show sync settings in the disclaimer.
+  [self startSyncOrAdvancedSettings:YES];
+}
+
+// Adds consent string ID.
+- (void)addConsentStringID:(const int)stringID {
+  [_consentStringIDs addObject:[NSNumber numberWithInt:stringID]];
+}
+
+// Logs scrollability metric on view appears.
+- (void)logScrollButtonVisible:(BOOL)scrollButtonVisible {
+  if (!_firstRun) {
+    return;
+  }
+  RecordFirstRunScrollButtonVisibilityMetrics(
+      first_run::FirstRunScreenType::kTangibleSyncScreen, scrollButtonVisible);
+}
+
+#pragma mark - Private
+
+// Starts syncing or opens `advancedSettings`.
+- (void)startSyncOrAdvancedSettings:(BOOL)advancedSettings {
+  _advancedSettingsRequested = advancedSettings;
+
+  ChromeIdentity* identity =
+      AuthenticationServiceFactory::GetForBrowserState(
+          self.browser->GetBrowserState())
+          ->GetPrimaryIdentity(signin::ConsentLevel::kSignin);
+
+  PostSignInAction postSignInAction = advancedSettings
+                                          ? POST_SIGNIN_ACTION_NONE
+                                          : POST_SIGNIN_ACTION_COMMIT_SYNC;
+  AuthenticationFlow* authenticationFlow =
+      [[AuthenticationFlow alloc] initWithBrowser:self.browser
+                                         identity:identity
+                                 postSignInAction:postSignInAction
+                         presentingViewController:_viewController];
+  authenticationFlow.dispatcher = HandlerForProtocol(
+      self.browser->GetCommandDispatcher(), BrowsingDataCommands);
+  authenticationFlow.delegate = _viewController;
+
+  [_mediator startSyncWithConfirmationID:_viewController.activateSyncButtonID
+                              consentIDs:_consentStringIDs
+                      authenticationFlow:authenticationFlow
+       advancedSyncSettingsLinkWasTapped:advancedSettings];
+}
+
+// Shows the advanced sync settings.
+- (void)showAdvancedSettings {
+  DCHECK(!_advancedSettingsSigninCoordinator);
+
+  const IdentitySigninState signinState =
+      IdentitySigninStateSignedInWithSyncDisabled;
+
+  _advancedSettingsSigninCoordinator = [SigninCoordinator
+      advancedSettingsSigninCoordinatorWithBaseViewController:_viewController
+                                                      browser:self.browser
+                                                  signinState:signinState];
+  __weak __typeof(self) weakSelf = self;
+  _advancedSettingsSigninCoordinator.signinCompletion =
+      ^(SigninCoordinatorResult advancedSigninResult,
+        SigninCompletionInfo* signinCompletionInfo) {
+        [weakSelf onAdvancedSettingsFinished];
+      };
+  [_advancedSettingsSigninCoordinator start];
+}
+
+// Stops `_advancedSettingsSigninCoordinator`.
+- (void)onAdvancedSettingsFinished {
+  DCHECK(_advancedSettingsSigninCoordinator);
+  [_advancedSettingsSigninCoordinator stop];
+  _advancedSettingsSigninCoordinator = nil;
+}
+
 @end
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.h b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.h
index 2bda129..a1efc759 100644
--- a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.h
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.h
@@ -7,9 +7,28 @@
 
 #import <UIKit/UIKit.h>
 
+@class AuthenticationFlow;
 class AuthenticationService;
 class ChromeAccountManagerService;
+class SyncSetupService;
 @protocol TangibleSyncConsumer;
+@protocol TangibleSyncMediatorDelegate;
+
+namespace consent_auditor {
+class ConsentAuditor;
+}  // namespace consent_auditor
+
+namespace signin {
+class IdentityManager;
+}  // namespace signin
+
+namespace syncer {
+class SyncService;
+}  // namespace syncer
+
+namespace unified_consent {
+class UnifiedConsentService;
+}  // namespace unified_consent
 
 // Mediator that handles the sync operations.
 @interface TangibleSyncMediator : NSObject
@@ -17,17 +36,38 @@
 // Consumer for this mediator.
 @property(nonatomic, weak) id<TangibleSyncConsumer> consumer;
 
+// Delegate.
+@property(nonatomic, weak) id<TangibleSyncMediatorDelegate> delegate;
+
 - (instancetype)init NS_UNAVAILABLE;
 
-- (instancetype)initWithAuthenticationService:
-                    (AuthenticationService*)authenticationService
-                  chromeAccountManagerService:
-                      (ChromeAccountManagerService*)chromeAccountManagerService
+- (instancetype)
+    initWithAuthenticationService:(AuthenticationService*)authenticationService
+      chromeAccountManagerService:
+          (ChromeAccountManagerService*)chromeAccountManagerService
+                   consentAuditor:
+                       (consent_auditor::ConsentAuditor*)consentAuditor
+                  identityManager:(signin::IdentityManager*)identityManager
+                      syncService:(syncer::SyncService*)syncService
+                 syncSetupService:(SyncSetupService*)syncSetupService
+            unifiedConsentService:
+                (unified_consent::UnifiedConsentService*)unifiedConsentService
     NS_DESIGNATED_INITIALIZER;
 
 // Disconnect the mediator.
 - (void)disconnect;
 
+// Starts the sync engine.
+// `confirmationID` The confirmation string ID of sync.
+// `consentIDs` The consent string IDs of sync screen.
+// `authenticationFlow` the object used to manage the authentication flow.
+// `advancedSyncSettingsLinkWasTapped` whether the link to show the
+// advance settings was used to start the sync.
+- (void)startSyncWithConfirmationID:(const int)confirmationID
+                           consentIDs:(NSArray<NSNumber*>*)consentIDs
+                   authenticationFlow:(AuthenticationFlow*)authenticationFlow
+    advancedSyncSettingsLinkWasTapped:(BOOL)advancedSyncSettingsLinkWasTapped;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_MEDIATOR_H_
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.mm b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.mm
index c30ad52..2244330 100644
--- a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.mm
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.mm
@@ -4,10 +4,19 @@
 
 #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator.h"
 
+#import "base/check_op.h"
+#import "base/strings/sys_string_conversions.h"
+#import "components/consent_auditor/consent_auditor.h"
+#import "components/sync/driver/sync_service.h"
+#import "components/sync/driver/sync_user_settings.h"
+#import "components/unified_consent/unified_consent_service.h"
 #import "ios/chrome/browser/signin/authentication_service.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service.h"
 #import "ios/chrome/browser/signin/chrome_account_manager_service_observer_bridge.h"
+#import "ios/chrome/browser/sync/sync_setup_service.h"
+#import "ios/chrome/browser/ui/authentication/authentication_flow.h"
 #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_consumer.h"
+#import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator_delegate.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -22,12 +31,31 @@
   ChromeAccountManagerService* _accountManagerService;
   std::unique_ptr<ChromeAccountManagerServiceObserverBridge>
       _accountManagerServiceObserver;
+  // Auditor for user consent.
+  consent_auditor::ConsentAuditor* _consentAuditor;
+  // Manager for user's Google identities.
+  signin::IdentityManager* _identityManager;
+  // Manager for the authentication flow.
+  AuthenticationFlow* _authenticationFlow;
+  // Sync service.
+  syncer::SyncService* _syncService;
+  // Service that allows for configuring sync.
+  SyncSetupService* _syncSetupService;
+  // Manager for user consent.
+  unified_consent::UnifiedConsentService* _unifiedConsentService;
 }
 
 - (instancetype)
     initWithAuthenticationService:(AuthenticationService*)authenticationService
       chromeAccountManagerService:
-          (ChromeAccountManagerService*)chromeAccountManagerService {
+          (ChromeAccountManagerService*)chromeAccountManagerService
+                   consentAuditor:
+                       (consent_auditor::ConsentAuditor*)consentAuditor
+                  identityManager:(signin::IdentityManager*)identityManager
+                      syncService:(syncer::SyncService*)syncService
+                 syncSetupService:(SyncSetupService*)syncSetupService
+            unifiedConsentService:
+                (unified_consent::UnifiedConsentService*)unifiedConsentService {
   self = [super init];
   if (self) {
     _authenticationService = authenticationService;
@@ -35,6 +63,11 @@
     _accountManagerServiceObserver =
         std::make_unique<ChromeAccountManagerServiceObserverBridge>(
             self, _accountManagerService);
+    _consentAuditor = consentAuditor;
+    _identityManager = identityManager;
+    _syncService = syncService;
+    _syncSetupService = syncSetupService;
+    _unifiedConsentService = unifiedConsentService;
   }
   return self;
 }
@@ -46,6 +79,27 @@
   _accountManagerService = nil;
 }
 
+- (void)startSyncWithConfirmationID:(const int)confirmationID
+                           consentIDs:(NSArray<NSNumber*>*)consentIDs
+                   authenticationFlow:(AuthenticationFlow*)authenticationFlow
+    advancedSyncSettingsLinkWasTapped:(BOOL)advancedSyncSettingsLinkWasTapped {
+  DCHECK(!_authenticationFlow);
+
+  [self.consumer setUIEnabled:NO];
+
+  // Local copy to be captured.
+  NSArray<NSNumber*>* consentIDsCopy = [consentIDs copy];
+
+  _authenticationFlow = authenticationFlow;
+  __weak __typeof(self) weakSelf = self;
+  [_authenticationFlow startSignInWithCompletion:^(BOOL success) {
+    [weakSelf signinCompletedWithSuccess:success
+                          confirmationID:confirmationID
+                              consentIDs:consentIDsCopy
+               advancedSettingsRequested:advancedSyncSettingsLinkWasTapped];
+  }];
+}
+
 #pragma mark - Properties
 
 - (void)setConsumer:(id<TangibleSyncConsumer>)consumer {
@@ -68,6 +122,14 @@
   }
 }
 
+- (void)identityListChanged {
+  ChromeIdentity* identity =
+      _authenticationService->GetPrimaryIdentity(signin::ConsentLevel::kSignin);
+  if (!identity) {
+    [self.delegate tangibleSyncMediatorUserRemoved:self];
+  }
+}
+
 #pragma mark - Private
 
 // Updates the avatar image for the consumer from `identity`.
@@ -77,4 +139,60 @@
   self.consumer.primaryIdentityAvatarImage = image;
 }
 
+// Callback used when the sign in flow is complete, with `success`.
+- (void)signinCompletedWithSuccess:(BOOL)success
+                    confirmationID:(const int)confirmationID
+                        consentIDs:(NSArray<NSNumber*>*)consentIDs
+         advancedSettingsRequested:(BOOL)advancedSettingsRequested {
+  _authenticationFlow = nil;
+  [self.consumer setUIEnabled:YES];
+
+  if (!success) {
+    return;
+  }
+
+  // The user does not give Sync Consent if the Advanced Settings link is
+  // tapped.
+  if (advancedSettingsRequested) {
+    // Sync has to be set as requested in order to display the preferences
+    // correctly and differentiate the special state where the user is signed
+    // in, but the sync feature can't start yet.
+    _syncService->GetUserSettings()->SetSyncRequested(true);
+  } else {
+    // TODO(crbug.com/1254359): Dedupe duplicated code, here and in
+    // user_signin_mediator.
+    ChromeIdentity* identity = _authenticationService->GetPrimaryIdentity(
+        signin::ConsentLevel::kSignin);
+    DCHECK(identity);
+
+    sync_pb::UserConsentTypes::SyncConsent syncConsent;
+    syncConsent.set_status(sync_pb::UserConsentTypes::ConsentStatus::
+                               UserConsentTypes_ConsentStatus_GIVEN);
+
+    DCHECK_NE(confirmationID, 0);
+    syncConsent.set_confirmation_grd_id(confirmationID);
+    DCHECK_NE(consentIDs.count, 0ul);
+    for (NSNumber* consentID in consentIDs) {
+      syncConsent.add_description_grd_ids([consentID intValue]);
+    }
+
+    CoreAccountId coreAccountId = _identityManager->PickAccountIdForAccount(
+        base::SysNSStringToUTF8([identity gaiaID]),
+        base::SysNSStringToUTF8([identity userEmail]));
+    _consentAuditor->RecordSyncConsent(coreAccountId, syncConsent);
+    _authenticationService->GrantSyncConsent(identity);
+
+    _unifiedConsentService->SetUrlKeyedAnonymizedDataCollectionEnabled(true);
+
+    // Turn on FirstSetupComplete flag after the authentication service has
+    // granted user consent to start Sync.
+    _syncSetupService->SetFirstSetupComplete(
+        syncer::SyncFirstSetupCompleteSource::BASIC_FLOW);
+
+    _syncSetupService->CommitSyncChanges();
+  }
+
+  [self.delegate tangibleSyncMediatorDidSuccessfulyFinishSignin:self];
+}
+
 @end
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator_delegate.h b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator_delegate.h
new file mode 100644
index 0000000..1661a04
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator_delegate.h
@@ -0,0 +1,24 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_MEDIATOR_DELEGATE_H_
+#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_MEDIATOR_DELEGATE_H_
+
+#import <UIKit/UIKit.h>
+
+@class TangibleSyncMediator;
+
+// Delegate for the Sync mediator.
+@protocol TangibleSyncMediatorDelegate
+
+// Notifies the delegate that `mediator` has finished sign in with success.
+- (void)tangibleSyncMediatorDidSuccessfulyFinishSignin:
+    (TangibleSyncMediator*)mediator;
+
+// Notifies the delegate that the user has been removed.
+- (void)tangibleSyncMediatorUserRemoved:(TangibleSyncMediator*)mediator;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_MEDIATOR_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.h b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.h
index f0eb42f2..2e869cf 100644
--- a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.h
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.h
@@ -5,12 +5,22 @@
 #ifndef IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_VIEW_CONTROLLER_H_
 #define IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_VIEW_CONTROLLER_H_
 
+#import "ios/chrome/browser/ui/authentication/authentication_flow.h"
 #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_consumer.h"
+#import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller_delegate.h"
 #import "ios/chrome/common/ui/promo_style/promo_style_view_controller.h"
 
+@protocol TangibleSyncViewControllerDelegate;
+
 // View controller for tangible sync.
 @interface TangibleSyncViewController
-    : PromoStyleViewController <TangibleSyncConsumer>
+    : PromoStyleViewController <AuthenticationFlowDelegate,
+                                TangibleSyncConsumer>
+
+@property(nonatomic, weak) id<TangibleSyncViewControllerDelegate> delegate;
+
+// The ID of the main button activating sync.
+@property(nonatomic, readonly, assign) int activateSyncButtonID;
 
 @end
 
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.mm b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.mm
index 13e3b97c..fcbc8703 100644
--- a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.mm
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.mm
@@ -4,7 +4,9 @@
 
 #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.h"
 
+#import "ios/chrome/browser/ui/elements/activity_overlay_view.h"
 #import "ios/chrome/browser/ui/elements/instruction_view.h"
+#import "ios/chrome/common/ui/util/constraints_ui_util.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "net/base/mac/url_conversions.h"
 #import "ui/base/l10n/l10n_util.h"
@@ -21,23 +23,41 @@
 
 }  // namespace
 
-@implementation TangibleSyncViewController
+@implementation TangibleSyncViewController {
+  // Scrim displayed above the view when the UI is disabled.
+  ActivityOverlayView* _overlay;
+}
 
+@dynamic delegate;
 @synthesize primaryIdentityAvatarImage = _primaryIdentityAvatarImage;
 
+#pragma mark - UIViewController
+
 - (void)viewDidLoad {
   self.shouldHideBanner = YES;
   self.hasAvatarImage = YES;
+  self.scrollToEndMandatory = YES;
+  self.readMoreString =
+      l10n_util::GetNSString(IDS_IOS_FIRST_RUN_SCREEN_READ_MORE);
   self.avatarImage = self.primaryIdentityAvatarImage;
+  [self.delegate addConsentStringID:IDS_IOS_TANGIBLE_SYNC_TITLE];
   self.titleText = l10n_util::GetNSString(IDS_IOS_TANGIBLE_SYNC_TITLE);
+  [self.delegate addConsentStringID:IDS_IOS_TANGIBLE_SYNC_SUBTITLE];
   self.subtitleText = l10n_util::GetNSString(IDS_IOS_TANGIBLE_SYNC_SUBTITLE);
-  self.primaryActionString =
-      l10n_util::GetNSString(IDS_IOS_ACCOUNT_UNIFIED_CONSENT_OK_BUTTON);
+  _activateSyncButtonID = IDS_IOS_ACCOUNT_UNIFIED_CONSENT_OK_BUTTON;
+  [self.delegate addConsentStringID:_activateSyncButtonID];
+  self.primaryActionString = l10n_util::GetNSString(_activateSyncButtonID);
+  [self.delegate addConsentStringID:
+                     IDS_IOS_FIRST_RUN_DEFAULT_BROWSER_SCREEN_SECONDARY_ACTION];
   self.secondaryActionString = l10n_util::GetNSString(
       IDS_IOS_FIRST_RUN_DEFAULT_BROWSER_SCREEN_SECONDARY_ACTION);
+  [self.delegate addConsentStringID:IDS_IOS_TANGIBLE_SYNC_DISCLAIMER];
   self.disclaimerText =
       l10n_util::GetNSString(IDS_IOS_TANGIBLE_SYNC_DISCLAIMER);
   self.disclaimerURLs = @[ net::NSURLWithGURL(GURL(kSettingsSyncURL)) ];
+  [self.delegate addConsentStringID:IDS_IOS_TANGIBLE_SYNC_DATA_TYPE_BOOKMARKS];
+  [self.delegate addConsentStringID:IDS_IOS_TANGIBLE_SYNC_DATA_TYPE_AUTOFILL];
+  [self.delegate addConsentStringID:IDS_IOS_TANGIBLE_SYNC_DATA_TYPE_HISTORY];
   NSArray<NSString*>* dataTypeNames = @[
     l10n_util::GetNSString(IDS_IOS_TANGIBLE_SYNC_DATA_TYPE_BOOKMARKS),
     l10n_util::GetNSString(IDS_IOS_TANGIBLE_SYNC_DATA_TYPE_AUTOFILL),
@@ -62,10 +82,29 @@
         constraintEqualToAnchor:self.specificContentView.leadingAnchor],
     [instructionView.trailingAnchor
         constraintEqualToAnchor:self.specificContentView.trailingAnchor],
+    [self.specificContentView.bottomAnchor
+        constraintGreaterThanOrEqualToAnchor:instructionView.bottomAnchor],
   ]];
   [super viewDidLoad];
 }
 
+- (void)viewDidAppear:(BOOL)animated {
+  [super viewDidAppear:animated];
+  [self.delegate logScrollButtonVisible:!self.didReachBottom];
+}
+
+#pragma mark - AuthenticationFlowDelegate
+
+- (void)didPresentDialog {
+  DCHECK(_overlay);
+  [_overlay.indicator stopAnimating];
+}
+
+- (void)didDismissDialog {
+  DCHECK(_overlay);
+  [_overlay.indicator startAnimating];
+}
+
 #pragma mark - TangibleSyncConsumer
 
 - (void)setPrimaryIdentityAvatarImage:(UIImage*)primaryIdentityAvatarImage {
@@ -75,4 +114,17 @@
   }
 }
 
+- (void)setUIEnabled:(BOOL)UIEnabled {
+  if (UIEnabled) {
+    [_overlay removeFromSuperview];
+    _overlay = nil;
+  } else {
+    _overlay = [[ActivityOverlayView alloc] init];
+    _overlay.translatesAutoresizingMaskIntoConstraints = NO;
+    [self.view addSubview:_overlay];
+    AddSameConstraints(self.view, _overlay);
+    [_overlay.indicator startAnimating];
+  }
+}
+
 @end
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller_delegate.h b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller_delegate.h
new file mode 100644
index 0000000..a64d963
--- /dev/null
+++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller_delegate.h
@@ -0,0 +1,21 @@
+// 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 IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_VIEW_CONTROLLER_DELEGATE_H_
+#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_VIEW_CONTROLLER_DELEGATE_H_
+
+#import "ios/chrome/common/ui/promo_style/promo_style_view_controller.h"
+
+// View controller for tangible sync.
+@protocol TangibleSyncViewControllerDelegate <PromoStyleViewControllerDelegate>
+
+// Adds consent string ID.
+- (void)addConsentStringID:(const int)stringID;
+
+// Logs scrollability metric on view appears.
+- (void)logScrollButtonVisible:(BOOL)scrollButtonVisible;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_AUTHENTICATION_TANGIBLE_SYNC_TANGIBLE_SYNC_VIEW_CONTROLLER_DELEGATE_H_
diff --git a/ios/chrome/browser/ui/autofill/form_input_accessory/branding_view_controller.mm b/ios/chrome/browser/ui/autofill/form_input_accessory/branding_view_controller.mm
index e6b760d..a0694e7 100644
--- a/ios/chrome/browser/ui/autofill/form_input_accessory/branding_view_controller.mm
+++ b/ios/chrome/browser/ui/autofill/form_input_accessory/branding_view_controller.mm
@@ -18,8 +18,8 @@
 // The left margin of the branding logo, if visible.
 constexpr CGFloat kLeadingInset = 10;
 // The scale used by the "pop" animation.
-constexpr CGFloat kAnimationScale = 1.25;
-// Wait time after the branding is shown to perform pop animation.
+constexpr CGFloat kAnimationScale = ((CGFloat)4) / 3;
+// Wait time after the keyboard settles into placetwit to perform pop animation.
 constexpr base::TimeDelta kAnimationWaitTime = base::Milliseconds(200);
 // Time it takes the "pop" animation to perform.
 constexpr base::TimeDelta kTimeToAnimate = base::Milliseconds(400);
@@ -73,21 +73,14 @@
   button.isAccessibilityElement = NO;  // Prevents VoiceOver users from tap.
   button.translatesAutoresizingMaskIntoConstraints = NO;
   self.view = button;
-}
 
-- (void)viewDidAppear:(BOOL)animated {
-  [super viewDidAppear:animated];
-  DCHECK(self.delegate);
-  if (!self.shouldAnimate) {
-    return;
-  }
-  // The "pop" animation should start after a slight timeout.
-  __weak BrandingViewController* weakSelf = self;
-  base::SequencedTaskRunnerHandle::Get()->PostDelayedTask(
-      FROM_HERE, base::BindOnce(^{
-        [weakSelf performPopAnimation];
-      }),
-      kAnimationWaitTime);
+  // Adds keyboard popup listener to show animation when keyboard is fully
+  // settled.
+  [[NSNotificationCenter defaultCenter]
+      addObserver:self
+         selector:@selector(onKeyboardAnimationComplete)
+             name:UIKeyboardDidShowNotification
+           object:nil];
 }
 
 #pragma mark - Accessors
@@ -113,6 +106,27 @@
 
 #pragma mark - Private
 
+// Check if the branding icon is visible and should perform an animation, and do
+// so if it should.
+- (void)onKeyboardAnimationComplete {
+  // Branding is invisible.
+  if (self.view.window == nil || self.view.hidden) {
+    return;
+  }
+  // Branding is visible; animate if it should.
+  DCHECK(self.delegate);
+  if (!self.shouldAnimate) {
+    return;
+  }
+  // The "pop" animation should start after a slight timeout.
+  __weak BrandingViewController* weakSelf = self;
+  base::SequencedTaskRunnerHandle::Get()->PostDelayedTask(
+      FROM_HERE, base::BindOnce(^{
+        [weakSelf performPopAnimation];
+      }),
+      kAnimationWaitTime);
+}
+
 // Performs the "pop" animation. This includes a quick enlarging of the icon
 // and shrinking it back to the original size, and if finishes successfully,
 // also notifies the delegate on completion.
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.mm
index db163929..78a27177 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_feature.mm
@@ -147,7 +147,7 @@
           kContentSuggestionsUIModuleRefreshFlagOverrideFieldTrialName)) {
     return base::GetFieldTrialParamByFeatureAsBool(
         kContentSuggestionsUIModuleRefresh,
-        kContentSuggestionsUIModuleRefreshMinimizeSpacingParam, false);
+        kContentSuggestionsUIModuleRefreshRemoveHeadersParam, false);
   }
   // If client is registered in the client-side FieldTrial, check its unique
   // base::Feature for enabled state.
diff --git a/ios/chrome/browser/ui/first_run/first_run_util.mm b/ios/chrome/browser/ui/first_run/first_run_util.mm
index 7d490d3c..093984fd 100644
--- a/ios/chrome/browser/ui/first_run/first_run_util.mm
+++ b/ios/chrome/browser/ui/first_run/first_run_util.mm
@@ -164,6 +164,11 @@
           "IOS.FirstRun.ScrollButtonVisible.WelcomeScreenWithUMACheckbox",
           scroll_button_visible);
       break;
+    case first_run::FirstRunScreenType::kTangibleSyncScreen:
+      base::UmaHistogramBoolean(
+          "IOS.FirstRun.ScrollButtonVisible.TangibleSyncScreen",
+          scroll_button_visible);
+      break;
   }
 }
 
diff --git a/ios/chrome/browser/ui/first_run/tangible_sync/tangible_sync_screen_coordinator.mm b/ios/chrome/browser/ui/first_run/tangible_sync/tangible_sync_screen_coordinator.mm
index 1562a48..cea2f94 100644
--- a/ios/chrome/browser/ui/first_run/tangible_sync/tangible_sync_screen_coordinator.mm
+++ b/ios/chrome/browser/ui/first_run/tangible_sync/tangible_sync_screen_coordinator.mm
@@ -89,9 +89,9 @@
 // Dismisses the current screen, and stops the FRE if `success` is `false`.
 - (void)tangibleSyncCoordinatorCompletedWithSuccess:(bool)success {
   if (success) {
-    [_delegate skipAllScreens];
-  } else {
     [_delegate screenWillFinishPresenting];
+  } else {
+    [_delegate skipAllScreens];
   }
 }
 
diff --git a/ios/chrome/browser/ui/lens/BUILD.gn b/ios/chrome/browser/ui/lens/BUILD.gn
index 011a04a..4d6b5f0d 100644
--- a/ios/chrome/browser/ui/lens/BUILD.gn
+++ b/ios/chrome/browser/ui/lens/BUILD.gn
@@ -17,6 +17,8 @@
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/url_loading",
+    "//ios/chrome/browser/web:web",
+    "//ios/chrome/browser/web_state_list",
     "//ios/public/provider/chrome/browser/lens:lens_api",
     "//ios/web/public/navigation",
   ]
diff --git a/ios/chrome/browser/ui/lens/lens_coordinator.mm b/ios/chrome/browser/ui/lens/lens_coordinator.mm
index 32d85c5..e5142d9 100644
--- a/ios/chrome/browser/ui/lens/lens_coordinator.mm
+++ b/ios/chrome/browser/ui/lens/lens_coordinator.mm
@@ -17,16 +17,25 @@
 #import "ios/chrome/browser/ui/lens/lens_entrypoint.h"
 #import "ios/chrome/browser/url_loading/url_loading_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
+#import "ios/chrome/browser/web/web_navigation_util.h"
+#import "ios/chrome/browser/web_state_list/web_state_dependency_installer_bridge.h"
+#import "ios/chrome/browser/web_state_list/web_state_list.h"
+#import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h"
 #import "ios/public/provider/chrome/browser/lens/lens_api.h"
 #import "ios/public/provider/chrome/browser/lens/lens_configuration.h"
 #import "ios/web/public/navigation/navigation_manager.h"
+#import "ios/web/public/web_state.h"
+#import "ios/web/public/web_state_observer_bridge.h"
 #import "net/base/mac/url_conversions.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
-@interface LensCoordinator () <ChromeLensControllerDelegate, LensCommands>
+@interface LensCoordinator () <ChromeLensControllerDelegate,
+                               LensCommands,
+                               CRWWebStateObserver,
+                               WebStateListObserving>
 
 // A controller that can provide an entrypoint into Lens features.
 @property(nonatomic, strong) id<ChromeLensController> lensController;
@@ -34,34 +43,82 @@
 // The Lens viewController.
 @property(nonatomic, strong) UIViewController* viewController;
 
+// Whether or not a Lens Web page load was triggered from the Lens UI.
+@property(nonatomic, assign) BOOL lensWebPageLoadTriggeredFromInputSelection;
+
+// The WebState that is loading a Lens results page, if any.
+@property(nonatomic, assign) web::WebState* loadingWebState;
+
 @end
 
-@implementation LensCoordinator
+@implementation LensCoordinator {
+  // Used to observe the active WebState.
+  std::unique_ptr<web::WebStateObserverBridge> _webStateObserverBridge;
+  std::unique_ptr<base::ScopedObservation<web::WebState, web::WebStateObserver>>
+      _webStateObservation;
+
+  // Used to observe the WebStateList.
+  std::unique_ptr<WebStateListObserverBridge> _webStateListObserverBridge;
+  std::unique_ptr<base::ScopedObservation<WebStateList, WebStateListObserver>>
+      _webStateListObservation;
+}
 @synthesize baseViewController = _baseViewController;
 
+// The timeout before the Lens UI is closed, if the Lens Web page
+// fails to load.
+const base::TimeDelta kCloseLensViewTimeout = base::Seconds(10);
+
 #pragma mark - ChromeCoordinator
 
 - (instancetype)initWithBrowser:(Browser*)browser {
   DCHECK(browser);
-  return [super initWithBaseViewController:nil browser:browser];
+  self = [super initWithBaseViewController:nil browser:browser];
+  if (self) {
+    _webStateObserverBridge =
+        std::make_unique<web::WebStateObserverBridge>(self);
+    _webStateListObserverBridge =
+        std::make_unique<WebStateListObserverBridge>(self);
+  }
+  return self;
 }
 
 - (void)start {
-  DCHECK(self.browser);
-  [self.browser->GetCommandDispatcher()
+  [super start];
+
+  Browser* browser = self.browser;
+  DCHECK(browser);
+
+  [browser->GetCommandDispatcher()
       startDispatchingToTarget:self
                    forProtocol:@protocol(LensCommands)];
 
-  [super start];
+  _webStateListObservation = std::make_unique<
+      base::ScopedObservation<WebStateList, WebStateListObserver>>(
+      _webStateListObserverBridge.get());
+
+  _webStateObservation = std::make_unique<
+      base::ScopedObservation<web::WebState, web::WebStateObserver>>(
+      _webStateObserverBridge.get());
+
+  self.loadingWebState = nil;
+  self.lensWebPageLoadTriggeredFromInputSelection = NO;
+  _webStateListObservation->Observe(browser->GetWebStateList());
 }
 
 - (void)stop {
+  Browser* browser = self.browser;
+  DCHECK(browser);
+
+  [self dismissViewController];
+  self.loadingWebState = nullptr;
+  self.lensWebPageLoadTriggeredFromInputSelection = NO;
+
+  _webStateListObservation.reset();
+  _webStateObservation.reset();
+
+  [browser->GetCommandDispatcher() stopDispatchingToTarget:self];
+
   [super stop];
-  if (self.baseViewController.presentedViewController == self.viewController) {
-    [self.baseViewController dismissViewControllerAnimated:NO completion:nil];
-  }
-  self.viewController = nil;
-  [self.browser->GetCommandDispatcher() stopDispatchingToTarget:self];
 }
 
 #pragma mark - Commands
@@ -141,16 +198,95 @@
 #pragma mark - ChromeLensControllerDelegate
 
 - (void)lensControllerDidTapDismissButton {
-  if (self.baseViewController.presentedViewController == self.viewController) {
-    [self.baseViewController dismissViewControllerAnimated:YES completion:nil];
+  self.lensWebPageLoadTriggeredFromInputSelection = NO;
+  web::WebState* loadingWebState = self.loadingWebState;
+  // If there is a webstate loading Lens results underneath the Lens UI,
+  // close it so we return the user to the initial state.
+  if (loadingWebState) {
+    const int index =
+        self.browser->GetWebStateList()->GetIndexOfWebState(loadingWebState);
+    self.loadingWebState = nil;
+    if (index != WebStateList::kInvalidIndex) {
+      self.browser->GetWebStateList()->CloseWebStateAt(
+          index, WebStateList::CLOSE_USER_ACTION);
+    }
   }
 
-  self.viewController = nil;
+  [self dismissViewController];
 }
 
 - (void)lensControllerDidGenerateLoadParams:
     (const web::NavigationManager::WebLoadParams&)params {
+  const __weak UIViewController* lensViewController = self.viewController;
+  if (!lensViewController) {
+    // If the coordinator view controller is nil, simply open the params and
+    // return early.
+    [self openWebLoadParams:params];
+    return;
+  }
+
+  // Prepare the coordinator for dismissing the presented view controller.
+  // Since we are opening Lens Web, mark the page load as triggered.
+  self.lensWebPageLoadTriggeredFromInputSelection = YES;
   [self openWebLoadParams:params];
+
+  // This function will be called when the user selects an image in Lens.
+  // we should continue to display the Lens UI until the search results
+  // for that image have loaded, or a timeout occurs.
+  // Fallback to close the preview if the page never loads beneath.
+  __weak LensCoordinator* weakSelf = self;
+  base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask(
+      FROM_HERE, base::BindOnce(^{
+        // Only dismiss the Lens view if the displayed view controller is the
+        // same as the one that was displayed when the load params were
+        // initially generated.
+        if (weakSelf.viewController == lensViewController) {
+          weakSelf.lensWebPageLoadTriggeredFromInputSelection = NO;
+          [weakSelf dismissViewController];
+        }
+      }),
+      kCloseLensViewTimeout);
+}
+
+- (void)lensControllerDidSelectURL:(NSURL*)url {
+  // This method is called when the user selects a URL within the Lens UI
+  // and should be treated as a link press.
+  web::NavigationManager::WebLoadParams params =
+      web_navigation_util::CreateWebLoadParams(
+          net::GURLWithNSURL(url), ui::PAGE_TRANSITION_LINK, nullptr);
+  [self openWebLoadParams:params];
+  [self dismissViewController];
+}
+
+#pragma mark - WebStateListObserving methods
+
+- (void)webStateList:(WebStateList*)webStateList
+    didChangeActiveWebState:(web::WebState*)newWebState
+                oldWebState:(web::WebState*)oldWebState
+                    atIndex:(int)atIndex
+                     reason:(ActiveWebStateChangeReason)reason {
+  if (self.lensWebPageLoadTriggeredFromInputSelection) {
+    self.loadingWebState = newWebState;
+  }
+}
+
+#pragma mark - CRWWebStateObserver methods
+
+- (void)webState:(web::WebState*)webState didLoadPageWithSuccess:(BOOL)success {
+  DCHECK_EQ(webState, self.loadingWebState);
+  // If the loaded page is a Lens Web page and we are expecting a Lens Web page
+  // load, dismiss the Lens UI.
+  if (self.lensWebPageLoadTriggeredFromInputSelection &&
+      ios::provider::IsLensWebResultsURL(webState->GetLastCommittedURL())) {
+    self.lensWebPageLoadTriggeredFromInputSelection = NO;
+    self.loadingWebState = nil;
+    [self dismissViewController];
+  }
+}
+
+- (void)webStateDestroyed:(web::WebState*)webState {
+  DCHECK_EQ(webState, self.loadingWebState);
+  self.loadingWebState = nil;
 }
 
 #pragma mark - Private
@@ -165,4 +301,21 @@
   UrlLoadingBrowserAgent::FromBrowser(self.browser)->Load(loadParams);
 }
 
+- (void)dismissViewController {
+  if (self.baseViewController.presentedViewController == self.viewController) {
+    [self.baseViewController dismissViewControllerAnimated:YES completion:nil];
+  }
+
+  self.viewController = nil;
+}
+
+- (void)setLoadingWebState:(web::WebState*)webState {
+  DCHECK(_webStateObservation);
+  _webStateObservation->Reset();
+  _loadingWebState = webState;
+  if (_loadingWebState) {
+    _webStateObservation->Observe(_loadingWebState);
+  }
+}
+
 @end
diff --git a/ios/chrome/browser/ui/promos_manager/promos_manager_coordinator.mm b/ios/chrome/browser/ui/promos_manager/promos_manager_coordinator.mm
index 7434a49..0699c750 100644
--- a/ios/chrome/browser/ui/promos_manager/promos_manager_coordinator.mm
+++ b/ios/chrome/browser/ui/promos_manager/promos_manager_coordinator.mm
@@ -244,6 +244,7 @@
 
     [alert addAction:defaultAction];
     [alert addAction:cancelAction];
+    alert.preferredAction = defaultAction;
 
     [self.baseViewController presentViewController:alert
                                           animated:YES
diff --git a/ios/chrome/test/providers/lens/test_lens.mm b/ios/chrome/test/providers/lens/test_lens.mm
index 89ba7326..cce1f1ff 100644
--- a/ios/chrome/test/providers/lens/test_lens.mm
+++ b/ios/chrome/test/providers/lens/test_lens.mm
@@ -41,6 +41,11 @@
   return false;
 }
 
+bool IsLensWebResultsURL(const GURL& url) {
+  // Lens is not supported for tests.
+  return false;
+}
+
 web::NavigationManager::WebLoadParams GenerateLensLoadParamsForImage(
     UIImage* image,
     LensEntrypoint entry_point,
diff --git a/ios/public/provider/chrome/browser/lens/lens_api.h b/ios/public/provider/chrome/browser/lens/lens_api.h
index bfe5f97..793f86b0 100644
--- a/ios/public/provider/chrome/browser/lens/lens_api.h
+++ b/ios/public/provider/chrome/browser/lens/lens_api.h
@@ -11,6 +11,7 @@
 
 @class LensConfiguration;
 @class UIViewController;
+class GURL;
 enum class LensEntrypoint;
 
 // A delegate that can receive Lens events forwarded by a ChromeLensController.
@@ -19,6 +20,9 @@
 // Called when the Lens view controller's dimiss button has been tapped.
 - (void)lensControllerDidTapDismissButton;
 
+// Called when the user selects a URL in Lens.
+- (void)lensControllerDidSelectURL:(NSURL*)url;
+
 // Called when the user selects an image and the Lens controller has prepared
 // `params` for loading a Lens web page.
 - (void)lensControllerDidGenerateLoadParams:
@@ -50,6 +54,9 @@
 // Returns whether Lens is supported for the current build.
 bool IsLensSupported();
 
+// Returns whether or not the url represents a Lens Web results page.
+bool IsLensWebResultsURL(const GURL& url);
+
 // Generates web load params for a Lens image search for the given
 // 'image' and 'entry_point'.
 web::NavigationManager::WebLoadParams GenerateLensLoadParamsForImage(
diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc
index 7da5704..f2e38845 100644
--- a/media/audio/mac/audio_manager_mac.cc
+++ b/media/audio/mac/audio_manager_mac.cc
@@ -4,7 +4,6 @@
 
 #include "media/audio/mac/audio_manager_mac.h"
 
-#include <algorithm>
 #include <limits>
 #include <memory>
 #include <utility>
@@ -19,6 +18,7 @@
 #include "base/memory/free_deleter.h"
 #include "base/power_monitor/power_monitor.h"
 #include "base/power_monitor/power_observer.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/threading/thread_checker.h"
 #include "base/time/time.h"
@@ -1229,9 +1229,7 @@
 
 void AudioManagerMac::ReleaseInputStream(AudioInputStream* stream) {
   DCHECK(GetTaskRunner()->BelongsToCurrentThread());
-  auto stream_it = std::find(basic_input_streams_.begin(),
-                             basic_input_streams_.end(),
-                             stream);
+  auto stream_it = base::ranges::find(basic_input_streams_, stream);
   if (stream_it == basic_input_streams_.end())
     low_latency_input_streams_.remove(static_cast<AUAudioInputStream*>(stream));
   else
diff --git a/media/base/android/media_codec_util.cc b/media/base/android/media_codec_util.cc
index 49c00090..9c14831 100644
--- a/media/base/android/media_codec_util.cc
+++ b/media/base/android/media_codec_util.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 
-#include <algorithm>
 #include <vector>
 
 #include "base/android/build_info.h"
 #include "base/android/jni_android.h"
 #include "base/android/jni_array.h"
 #include "base/android/jni_string.h"
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/string_util.h"
@@ -68,8 +68,7 @@
       kMp3MimeType, kAacMimeType,         kOpusMimeType, kVorbisMimeType,
       kAvcMimeType, kDolbyVisionMimeType, kHevcMimeType, kVp8MimeType,
       kVp9MimeType, kAv1MimeType};
-  return std::find(supported.begin(), supported.end(), mime_type) !=
-         supported.end();
+  return base::Contains(supported, mime_type);
 }
 
 static bool IsDecoderSupportedByDevice(const std::string& android_mime_type) {
diff --git a/media/base/audio_converter.cc b/media/base/audio_converter.cc
index eaa4b1f9..a9d261b 100644
--- a/media/base/audio_converter.cc
+++ b/media/base/audio_converter.cc
@@ -10,11 +10,11 @@
 
 #include "media/base/audio_converter.h"
 
-#include <algorithm>
 #include <memory>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/trace_event/trace_event.h"
 #include "media/base/audio_bus.h"
@@ -88,14 +88,12 @@
 AudioConverter::~AudioConverter() = default;
 
 void AudioConverter::AddInput(InputCallback* input) {
-  DCHECK(std::find(transform_inputs_.begin(), transform_inputs_.end(), input) ==
-         transform_inputs_.end());
+  DCHECK(!base::Contains(transform_inputs_, input));
   transform_inputs_.push_back(input);
 }
 
 void AudioConverter::RemoveInput(InputCallback* input) {
-  DCHECK(std::find(transform_inputs_.begin(), transform_inputs_.end(), input) !=
-         transform_inputs_.end());
+  DCHECK(base::Contains(transform_inputs_, input));
   transform_inputs_.remove(input);
 
   if (transform_inputs_.empty())
diff --git a/media/base/channel_mixing_matrix.cc b/media/base/channel_mixing_matrix.cc
index 1c6fe33..1b0b3bd 100644
--- a/media/base/channel_mixing_matrix.cc
+++ b/media/base/channel_mixing_matrix.cc
@@ -6,9 +6,9 @@
 
 #include <stddef.h>
 
-#include <algorithm>
-
 #include "base/check_op.h"
+#include "base/containers/contains.h"
+#include "base/ranges/algorithm.h"
 #include "media/base/channel_mixer.h"
 
 namespace media {
@@ -260,13 +260,11 @@
 }
 
 void ChannelMixingMatrix::AccountFor(Channels ch) {
-  unaccounted_inputs_.erase(std::find(
-      unaccounted_inputs_.begin(), unaccounted_inputs_.end(), ch));
+  unaccounted_inputs_.erase(base::ranges::find(unaccounted_inputs_, ch));
 }
 
 bool ChannelMixingMatrix::IsUnaccounted(Channels ch) const {
-  return std::find(unaccounted_inputs_.begin(), unaccounted_inputs_.end(),
-                   ch) != unaccounted_inputs_.end();
+  return base::Contains(unaccounted_inputs_, ch);
 }
 
 bool ChannelMixingMatrix::HasInputChannel(Channels ch) const {
diff --git a/media/capture/video/chromeos/camera_3a_controller.cc b/media/capture/video/chromeos/camera_3a_controller.cc
index 4b09b8f..3b807f3c 100644
--- a/media/capture/video/chromeos/camera_3a_controller.cc
+++ b/media/capture/video/chromeos/camera_3a_controller.cc
@@ -108,11 +108,10 @@
     if (available_modes.empty()) {
       return false;
     }
-    if (std::find(
-            available_modes.begin(), available_modes.end(),
+    if (!base::Contains(
+            available_modes,
             base::checked_cast<uint8_t>(
-                cros::mojom::AndroidControlMode::ANDROID_CONTROL_MODE_AUTO)) ==
-        available_modes.end()) {
+                cros::mojom::AndroidControlMode::ANDROID_CONTROL_MODE_AUTO))) {
       return false;
     }
     if (!available_ae_modes_.count(
diff --git a/media/capture/video/chromeos/token_manager.cc b/media/capture/video/chromeos/token_manager.cc
index d24775b..fcc2fce 100644
--- a/media/capture/video/chromeos/token_manager.cc
+++ b/media/capture/video/chromeos/token_manager.cc
@@ -7,8 +7,10 @@
 #include <grp.h>
 #include <sys/types.h>
 #include <unistd.h>
+
 #include <string>
 
+#include "base/containers/contains.h"
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
 #include "base/strings/string_number_conversions.h"
@@ -99,8 +101,7 @@
 base::UnguessableToken TokenManager::GetTokenForTrustedClient(
     cros::mojom::CameraClientType type) {
   base::AutoLock l(client_token_map_lock_);
-  if (std::find(kTrustedClientTypes.begin(), kTrustedClientTypes.end(), type) ==
-      kTrustedClientTypes.end()) {
+  if (!base::Contains(kTrustedClientTypes, type)) {
     return base::UnguessableToken();
   }
   auto& token_set = client_token_map_[type];
diff --git a/media/capture/video/linux/v4l2_capture_delegate.cc b/media/capture/video/linux/v4l2_capture_delegate.cc
index d98e1484..8ee347e4 100644
--- a/media/capture/video/linux/v4l2_capture_delegate.cc
+++ b/media/capture/video/linux/v4l2_capture_delegate.cc
@@ -11,6 +11,7 @@
 #include <sys/ioctl.h>
 #include <sys/mman.h>
 
+#include <algorithm>
 #include <utility>
 
 #include "base/bind.h"
diff --git a/media/capture/video/video_capture_device.cc b/media/capture/video/video_capture_device.cc
index e00010c..b26304b0 100644
--- a/media/capture/video/video_capture_device.cc
+++ b/media/capture/video/video_capture_device.cc
@@ -6,6 +6,7 @@
 
 #include "base/callback.h"
 #include "base/command_line.h"
+#include "base/containers/contains.h"
 #include "base/i18n/timezone.h"
 #include "base/strings/string_util.h"
 #include "base/token.h"
@@ -88,10 +89,7 @@
       "CR", "CU", "DO", "EC", "FM", "GT", "GU", "GY", "HN", "HT", "JP",
       "KN", "KR", "KY", "MS", "MX", "NI", "PA", "PE", "PF", "PH", "PR",
       "PW", "SA", "SR", "SV", "TT", "TW", "UM", "US", "VG", "VI", "VE"};
-  const char** countries_using_60Hz_end =
-      countries_using_60Hz + std::size(countries_using_60Hz);
-  if (std::find(countries_using_60Hz, countries_using_60Hz_end,
-                current_country) == countries_using_60Hz_end) {
+  if (!base::Contains(countries_using_60Hz, current_country)) {
     return PowerLineFrequency::FREQUENCY_50HZ;
   }
   return PowerLineFrequency::FREQUENCY_60HZ;
diff --git a/media/capture/video/video_capture_device_client.cc b/media/capture/video/video_capture_device_client.cc
index c109ecd0..efa17586 100644
--- a/media/capture/video/video_capture_device_client.cc
+++ b/media/capture/video/video_capture_device_client.cc
@@ -4,7 +4,6 @@
 
 #include "media/capture/video/video_capture_device_client.h"
 
-#include <algorithm>
 #include <memory>
 #include <utility>
 
@@ -12,6 +11,7 @@
 #include "base/command_line.h"
 #include "base/containers/contains.h"
 #include "base/location.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
@@ -494,8 +494,7 @@
   // If a buffer to retire was specified, retire one.
   if (buffer_id_to_drop != VideoCaptureBufferPool::kInvalidId) {
     auto entry_iter =
-        std::find(buffer_ids_known_by_receiver_.begin(),
-                  buffer_ids_known_by_receiver_.end(), buffer_id_to_drop);
+        base::ranges::find(buffer_ids_known_by_receiver_, buffer_id_to_drop);
     if (entry_iter != buffer_ids_known_by_receiver_.end()) {
       buffer_ids_known_by_receiver_.erase(entry_iter);
       receiver_->OnBufferRetired(buffer_id_to_drop);
@@ -551,8 +550,7 @@
     // |buffer_pool_| has decided to release a buffer. Notify receiver in case
     // the buffer has already been shared with it.
     auto entry_iter =
-        std::find(buffer_ids_known_by_receiver_.begin(),
-                  buffer_ids_known_by_receiver_.end(), buffer_id_to_drop);
+        base::ranges::find(buffer_ids_known_by_receiver_, buffer_id_to_drop);
     if (entry_iter != buffer_ids_known_by_receiver_.end()) {
       buffer_ids_known_by_receiver_.erase(entry_iter);
       receiver_->OnBufferRetired(buffer_id_to_drop);
diff --git a/media/capture/video/video_capture_feedback.cc b/media/capture/video/video_capture_feedback.cc
index 12f1ae56..aa41bd0 100644
--- a/media/capture/video/video_capture_feedback.cc
+++ b/media/capture/video/video_capture_feedback.cc
@@ -4,9 +4,9 @@
 
 #include "media/capture/video/video_capture_feedback.h"
 
-#include <algorithm>
 #include <cmath>
 
+#include "base/containers/contains.h"
 #include "base/logging.h"
 
 namespace media {
@@ -63,8 +63,7 @@
   // Merge mapped sizes for all consumers.
   for (const gfx::Size& mapped_size : other.mapped_sizes) {
     // Skip duplicates.
-    if (std::find(mapped_sizes.begin(), mapped_sizes.end(), mapped_size) !=
-        mapped_sizes.end()) {
+    if (base::Contains(mapped_sizes, mapped_size)) {
       continue;
     }
     // As a safety measure, limit the number of sizes that can be asked for.
diff --git a/media/capture/video_capture_types.cc b/media/capture/video_capture_types.cc
index 42d26df..2e6a85f3 100644
--- a/media/capture/video_capture_types.cc
+++ b/media/capture/video_capture_types.cc
@@ -5,6 +5,7 @@
 #include "media/capture/video_capture_types.h"
 
 #include "base/check.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "media/base/limits.h"
 
@@ -51,14 +52,8 @@
 bool VideoCaptureFormat::ComparePixelFormatPreference(
     const VideoPixelFormat& lhs,
     const VideoPixelFormat& rhs) {
-  auto* format_lhs = std::find(
-      kSupportedCapturePixelFormats,
-      kSupportedCapturePixelFormats + std::size(kSupportedCapturePixelFormats),
-      lhs);
-  auto* format_rhs = std::find(
-      kSupportedCapturePixelFormats,
-      kSupportedCapturePixelFormats + std::size(kSupportedCapturePixelFormats),
-      rhs);
+  auto* format_lhs = base::ranges::find(kSupportedCapturePixelFormats, lhs);
+  auto* format_rhs = base::ranges::find(kSupportedCapturePixelFormats, rhs);
   return format_lhs < format_rhs;
 }
 
diff --git a/media/cast/common/encoded_frame.cc b/media/cast/common/encoded_frame.cc
index 132a91f..835688ce 100644
--- a/media/cast/common/encoded_frame.cc
+++ b/media/cast/common/encoded_frame.cc
@@ -9,9 +9,7 @@
 namespace media {
 namespace cast {
 
-EncodedFrame::EncodedFrame()
-    : dependency(UNKNOWN_DEPENDENCY), new_playout_delay_ms(0) {}
-
+EncodedFrame::EncodedFrame() = default;
 EncodedFrame::~EncodedFrame() = default;
 
 void EncodedFrame::CopyMetadataTo(EncodedFrame* dest) const {
diff --git a/media/cast/common/encoded_frame.h b/media/cast/common/encoded_frame.h
index 0504fdaf..fceb02e9 100644
--- a/media/cast/common/encoded_frame.h
+++ b/media/cast/common/encoded_frame.h
@@ -12,6 +12,7 @@
 #include "media/cast/cast_config.h"
 #include "media/cast/common/frame_id.h"
 #include "media/cast/common/rtp_time.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media {
 namespace cast {
@@ -19,24 +20,6 @@
 // A combination of metadata and data for one encoded frame.  This can contain
 // audio data or video data or other.
 struct EncodedFrame {
-  enum Dependency {
-    // "null" value, used to indicate whether |dependency| has been set.
-    UNKNOWN_DEPENDENCY,
-
-    // Not decodable without the reference frame indicated by
-    // |referenced_frame_id|.
-    DEPENDENT,
-
-    // Independently decodable.
-    INDEPENDENT,
-
-    // Independently decodable, and no future frames will depend on any frames
-    // before this one.
-    KEY,
-
-    DEPENDENCY_LAST = KEY
-  };
-
   EncodedFrame();
   virtual ~EncodedFrame();
 
@@ -53,7 +36,8 @@
   void CopyMetadataTo(EncodedFrame* dest) const;
 
   // This frame's dependency relationship with respect to other frames.
-  Dependency dependency;
+  openscreen::cast::EncodedFrame::Dependency dependency =
+      openscreen::cast::EncodedFrame::Dependency::kUnknown;
 
   // The label associated with this frame.  Implies an ordering relative to
   // other frames in the same stream.
@@ -82,7 +66,7 @@
 
   // Playout delay for this and all future frames. Used by the Adaptive
   // Playout delay extension. Zero means no change.
-  uint16_t new_playout_delay_ms;
+  uint16_t new_playout_delay_ms = 0;
 
   // The encoded signal data.
   std::string data;
diff --git a/media/cast/common/openscreen_conversion_helpers.cc b/media/cast/common/openscreen_conversion_helpers.cc
index e4abcee9..b2d720d 100644
--- a/media/cast/common/openscreen_conversion_helpers.cc
+++ b/media/cast/common/openscreen_conversion_helpers.cc
@@ -49,24 +49,10 @@
       std::chrono::duration_cast<std::chrono::microseconds>(tp).count());
 }
 
-openscreen::cast::EncodedFrame::Dependency ToOpenscreenDependency(
-    media::cast::EncodedFrame::Dependency dependency) {
-  switch (dependency) {
-    case media::cast::EncodedFrame::Dependency::UNKNOWN_DEPENDENCY:
-      return openscreen::cast::EncodedFrame::Dependency::kUnknown;
-    case media::cast::EncodedFrame::Dependency::DEPENDENT:
-      return openscreen::cast::EncodedFrame::Dependency::kDependent;
-    case media::cast::EncodedFrame::Dependency::INDEPENDENT:
-      return openscreen::cast::EncodedFrame::Dependency::kIndependent;
-    case media::cast::EncodedFrame::Dependency::KEY:
-      return openscreen::cast::EncodedFrame::Dependency::kKeyFrame;
-  }
-  NOTREACHED();
-}
 const openscreen::cast::EncodedFrame ToOpenscreenEncodedFrame(
     const SenderEncodedFrame& encoded_frame) {
   return openscreen::cast::EncodedFrame(
-      ToOpenscreenDependency(encoded_frame.dependency), encoded_frame.frame_id,
+      encoded_frame.dependency, encoded_frame.frame_id,
       encoded_frame.referenced_frame_id, encoded_frame.rtp_timestamp,
       ToOpenscreenTimePoint(encoded_frame.reference_time),
       std::chrono::milliseconds(encoded_frame.new_playout_delay_ms),
diff --git a/media/cast/common/openscreen_conversion_helpers.h b/media/cast/common/openscreen_conversion_helpers.h
index 0c2f46a..cd14f24 100644
--- a/media/cast/common/openscreen_conversion_helpers.h
+++ b/media/cast/common/openscreen_conversion_helpers.h
@@ -35,12 +35,6 @@
                             int timebase);
 base::TimeDelta ToTimeDelta(openscreen::Clock::duration tp);
 
-// TODO(https://crbug.com/1343116): as part of libcast implementation, we
-// should remove media::cast::EncodedFrame::Dependency in favor of using
-// the openscreen type throughout.
-openscreen::cast::EncodedFrame::Dependency ToOpenscreenDependency(
-    media::cast::EncodedFrame::Dependency dependency);
-
 const openscreen::cast::EncodedFrame ToOpenscreenEncodedFrame(
     const SenderEncodedFrame& encoded_frame);
 
diff --git a/media/cast/common/openscreen_conversion_helpers_unittest.cc b/media/cast/common/openscreen_conversion_helpers_unittest.cc
index 23d1c02..014051f 100644
--- a/media/cast/common/openscreen_conversion_helpers_unittest.cc
+++ b/media/cast/common/openscreen_conversion_helpers_unittest.cc
@@ -22,7 +22,8 @@
   original.lossiness = 0.5f;
   original.encode_completion_time =
       base::TimeTicks() + base::Milliseconds(1337);
-  original.dependency = EncodedFrame::Dependency::INDEPENDENT;
+  original.dependency =
+      openscreen::cast::EncodedFrame::Dependency::kIndependent;
   original.frame_id = FrameId::first();
   original.rtp_timestamp = ToRtpTimeTicks(base::Seconds(3), 9000);
   original.reference_time = base::TimeTicks() + base::Milliseconds(1338);
diff --git a/media/cast/encoding/audio_encoder.cc b/media/cast/encoding/audio_encoder.cc
index 17312aa..280f59a0 100644
--- a/media/cast/encoding/audio_encoder.cc
+++ b/media/cast/encoding/audio_encoder.cc
@@ -24,6 +24,7 @@
 #include "media/cast/common/rtp_time.h"
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/constants.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 #if !BUILDFLAG(IS_IOS)
 #include "third_party/opus/src/include/opus.h"
@@ -147,7 +148,8 @@
         break;
 
       std::unique_ptr<SenderEncodedFrame> audio_frame(new SenderEncodedFrame());
-      audio_frame->dependency = EncodedFrame::KEY;
+      audio_frame->dependency =
+          openscreen::cast::EncodedFrame::Dependency::kKeyFrame;
       audio_frame->frame_id = frame_id_;
       audio_frame->referenced_frame_id = frame_id_;
       audio_frame->rtp_timestamp = frame_rtp_timestamp_;
diff --git a/media/cast/encoding/audio_encoder_unittest.cc b/media/cast/encoding/audio_encoder_unittest.cc
index 433989e7..b36b4dd4 100644
--- a/media/cast/encoding/audio_encoder_unittest.cc
+++ b/media/cast/encoding/audio_encoder_unittest.cc
@@ -25,6 +25,7 @@
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/test/utility/audio_utility.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media {
 namespace cast {
@@ -57,7 +58,8 @@
 
   void FrameEncoded(std::unique_ptr<SenderEncodedFrame> encoded_frame,
                     int samples_skipped) {
-    EXPECT_EQ(encoded_frame->dependency, EncodedFrame::KEY);
+    EXPECT_EQ(encoded_frame->dependency,
+              openscreen::cast::EncodedFrame::Dependency::kKeyFrame);
     EXPECT_EQ(frames_received_, encoded_frame->frame_id - FrameId::first());
     EXPECT_EQ(encoded_frame->frame_id, encoded_frame->referenced_frame_id);
     // RTP timestamps should be monotonically increasing and integer multiples
diff --git a/media/cast/encoding/av1_encoder.cc b/media/cast/encoding/av1_encoder.cc
index c6193854..9b82a3e 100644
--- a/media/cast/encoding/av1_encoder.cc
+++ b/media/cast/encoding/av1_encoder.cc
@@ -10,6 +10,7 @@
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/constants.h"
 #include "third_party/libaom/source/libaom/aom/aomcx.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media {
 namespace cast {
@@ -245,10 +246,12 @@
       continue;
     if (pkt->data.frame.flags & AOM_FRAME_IS_KEY) {
       // TODO(hubbe): Replace "dependency" with a "bool is_key_frame".
-      encoded_frame->dependency = EncodedFrame::KEY;
+      encoded_frame->dependency =
+          openscreen::cast::EncodedFrame::Dependency::kKeyFrame;
       encoded_frame->referenced_frame_id = encoded_frame->frame_id;
     } else {
-      encoded_frame->dependency = EncodedFrame::DEPENDENT;
+      encoded_frame->dependency =
+          openscreen::cast::EncodedFrame::Dependency::kDependent;
       // Frame dependencies could theoretically be relaxed by looking for the
       // AOM_FRAME_IS_DROPPABLE flag, but in recent testing (Oct 2014), this
       // flag never seems to be set.
@@ -297,7 +300,8 @@
            << ", lossiness: " << encoded_frame->lossiness
            << " (quantizer chosen by the encoder was " << quantizer << ')';
 
-  if (encoded_frame->dependency == EncodedFrame::KEY) {
+  if (encoded_frame->dependency ==
+      openscreen::cast::EncodedFrame::Dependency::kKeyFrame) {
     key_frame_requested_ = false;
     encoding_speed_acc_.Reset(kHighestEncodingSpeed, video_frame->timestamp());
   } else {
diff --git a/media/cast/encoding/external_video_encoder.cc b/media/cast/encoding/external_video_encoder.cc
index 5c1d971..9407afe 100644
--- a/media/cast/encoding/external_video_encoder.cc
+++ b/media/cast/encoding/external_video_encoder.cc
@@ -423,7 +423,11 @@
 
       auto encoded_frame = std::make_unique<SenderEncodedFrame>();
       encoded_frame->dependency =
-          metadata.key_frame ? EncodedFrame::KEY : EncodedFrame::DEPENDENT;
+          metadata.key_frame
+              ?
+
+              openscreen::cast::EncodedFrame::Dependency::kKeyFrame
+              : openscreen::cast::EncodedFrame::Dependency::kDependent;
       encoded_frame->frame_id = next_frame_id_++;
       if (metadata.key_frame) {
         encoded_frame->referenced_frame_id = encoded_frame->frame_id;
diff --git a/media/cast/encoding/fake_software_video_encoder.cc b/media/cast/encoding/fake_software_video_encoder.cc
index 7566658..1b7de3c 100644
--- a/media/cast/encoding/fake_software_video_encoder.cc
+++ b/media/cast/encoding/fake_software_video_encoder.cc
@@ -15,6 +15,9 @@
 #include "media/cast/common/rtp_time.h"
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/constants.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
+
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
 
 namespace media {
 namespace cast {
@@ -45,11 +48,11 @@
 
   encoded_frame->frame_id = frame_id_++;
   if (next_frame_is_key_) {
-    encoded_frame->dependency = EncodedFrame::KEY;
+    encoded_frame->dependency = Dependency::kKeyFrame;
     encoded_frame->referenced_frame_id = encoded_frame->frame_id;
     next_frame_is_key_ = false;
   } else {
-    encoded_frame->dependency = EncodedFrame::DEPENDENT;
+    encoded_frame->dependency = Dependency::kDependent;
     encoded_frame->referenced_frame_id = encoded_frame->frame_id - 1;
   }
   encoded_frame->rtp_timestamp =
@@ -57,7 +60,7 @@
   encoded_frame->reference_time = reference_time;
 
   base::Value values(base::Value::Type::DICTIONARY);
-  values.SetBoolKey("key", encoded_frame->dependency == EncodedFrame::KEY);
+  values.SetBoolKey("key", encoded_frame->dependency == Dependency::kKeyFrame);
   values.SetIntKey("ref", encoded_frame->referenced_frame_id.lower_32_bits());
   values.SetIntKey("id", encoded_frame->frame_id.lower_32_bits());
   values.SetIntKey("size", frame_size_);
@@ -65,7 +68,7 @@
   encoded_frame->data.resize(
       std::max<size_t>(encoded_frame->data.size(), frame_size_), ' ');
 
-  if (encoded_frame->dependency == EncodedFrame::KEY) {
+  if (encoded_frame->dependency == Dependency::kKeyFrame) {
     encoded_frame->encoder_utilization = 1.0;
     encoded_frame->lossiness = 6.0;
   } else {
diff --git a/media/cast/encoding/h264_vt_encoder.cc b/media/cast/encoding/h264_vt_encoder.cc
index e64f9c7..6d06215 100644
--- a/media/cast/encoding/h264_vt_encoder.cc
+++ b/media/cast/encoding/h264_vt_encoder.cc
@@ -26,6 +26,9 @@
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/common/video_frame_factory.h"
 #include "media/cast/constants.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
+
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
 
 namespace media {
 namespace cast {
@@ -531,10 +534,10 @@
   encoded_frame->reference_time = request->reference_time;
   encoded_frame->rtp_timestamp = request->rtp_timestamp;
   if (is_keyframe) {
-    encoded_frame->dependency = EncodedFrame::KEY;
+    encoded_frame->dependency = Dependency::kKeyFrame;
     encoded_frame->referenced_frame_id = frame_id;
   } else {
-    encoded_frame->dependency = EncodedFrame::DEPENDENT;
+    encoded_frame->dependency = Dependency::kDependent;
     // H.264 supports complex frame reference schemes (multiple reference
     // frames, slice references, backward and forward references, etc). Cast
     // doesn't support the concept of forward-referencing frame dependencies or
diff --git a/media/cast/encoding/h264_vt_encoder_unittest.cc b/media/cast/encoding/h264_vt_encoder_unittest.cc
index 327dc1e..8e08af0 100644
--- a/media/cast/encoding/h264_vt_encoder_unittest.cc
+++ b/media/cast/encoding/h264_vt_encoder_unittest.cc
@@ -36,6 +36,8 @@
 #include "media/media_buildflags.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
+
 namespace {
 
 const int kVideoWidth = 1280;
@@ -96,9 +98,9 @@
     auto e = expectations_.front();
     expectations_.pop();
     if (e.expected_frame_id != e.expected_last_referenced_frame_id) {
-      EXPECT_EQ(EncodedFrame::DEPENDENT, encoded_frame->dependency);
+      EXPECT_EQ(Dependency::kDependent, encoded_frame->dependency);
     } else {
-      EXPECT_EQ(EncodedFrame::KEY, encoded_frame->dependency);
+      EXPECT_EQ(Dependency::kKeyFrame, encoded_frame->dependency);
     }
     EXPECT_EQ(e.expected_frame_id, encoded_frame->frame_id);
     EXPECT_EQ(e.expected_last_referenced_frame_id,
diff --git a/media/cast/encoding/video_encoder_unittest.cc b/media/cast/encoding/video_encoder_unittest.cc
index 2ef2c5b1..3b5e983 100644
--- a/media/cast/encoding/video_encoder_unittest.cc
+++ b/media/cast/encoding/video_encoder_unittest.cc
@@ -29,6 +29,7 @@
 #include "media/cast/test/utility/default_config.h"
 #include "media/cast/test/utility/video_utility.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 #if BUILDFLAG(IS_MAC)
 #include "base/threading/platform_thread.h"
@@ -295,11 +296,13 @@
       continue;
     }
 
-    if (encoded_frame->dependency == EncodedFrame::KEY) {
+    if (encoded_frame->dependency ==
+        openscreen::cast::EncodedFrame::Dependency::kKeyFrame) {
       EXPECT_EQ(encoded_frame->frame_id, encoded_frame->referenced_frame_id);
       last_key_frame_id = encoded_frame->frame_id;
     } else {
-      EXPECT_EQ(EncodedFrame::DEPENDENT, encoded_frame->dependency);
+      EXPECT_EQ(openscreen::cast::EncodedFrame::Dependency::kDependent,
+                encoded_frame->dependency);
       EXPECT_GT(encoded_frame->frame_id, encoded_frame->referenced_frame_id);
       // There must always be a KEY frame before any DEPENDENT ones.
       ASSERT_FALSE(last_key_frame_id.is_null());
diff --git a/media/cast/encoding/vpx_encoder.cc b/media/cast/encoding/vpx_encoder.cc
index f487b4a..2de5bd6 100644
--- a/media/cast/encoding/vpx_encoder.cc
+++ b/media/cast/encoding/vpx_encoder.cc
@@ -10,6 +10,9 @@
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/constants.h"
 #include "third_party/libvpx/source/libvpx/vpx/vp8cx.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
+
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
 
 namespace media {
 namespace cast {
@@ -285,10 +288,10 @@
       continue;
     if (pkt->data.frame.flags & VPX_FRAME_IS_KEY) {
       // TODO(hubbe): Replace "dependency" with a "bool is_key_frame".
-      encoded_frame->dependency = EncodedFrame::KEY;
+      encoded_frame->dependency = Dependency::kKeyFrame;
       encoded_frame->referenced_frame_id = encoded_frame->frame_id;
     } else {
-      encoded_frame->dependency = EncodedFrame::DEPENDENT;
+      encoded_frame->dependency = Dependency::kDependent;
       // Frame dependencies could theoretically be relaxed by looking for the
       // VPX_FRAME_IS_DROPPABLE flag, but in recent testing (Oct 2014), this
       // flag never seems to be set.
@@ -338,10 +341,10 @@
            << ", lossiness: " << encoded_frame->lossiness
            << " (quantizer chosen by the encoder was " << quantizer << ')';
 
-  if (encoded_frame->dependency == EncodedFrame::KEY) {
+  if (encoded_frame->dependency == Dependency::kKeyFrame) {
     key_frame_requested_ = false;
   }
-  if (encoded_frame->dependency == EncodedFrame::KEY) {
+  if (encoded_frame->dependency == Dependency::kKeyFrame) {
     encoding_speed_acc_.Reset(kHighestEncodingSpeed, video_frame->timestamp());
   } else {
     // Equivalent encoding speed considering both cpu_used setting and
diff --git a/media/cast/encoding/vpx_quantizer_parser_unittest.cc b/media/cast/encoding/vpx_quantizer_parser_unittest.cc
index 61d8d32..e8accbb 100644
--- a/media/cast/encoding/vpx_quantizer_parser_unittest.cc
+++ b/media/cast/encoding/vpx_quantizer_parser_unittest.cc
@@ -16,6 +16,7 @@
 #include "media/cast/test/utility/default_config.h"
 #include "media/cast/test/utility/video_utility.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media {
 namespace cast {
@@ -104,7 +105,8 @@
     unsigned int first_partition_size =
         (encoded_data[0] | (encoded_data[1] << 8) | (encoded_data[2] << 16)) >>
         5;
-    if (encoded_frame->dependency == EncodedFrame::KEY) {
+    if (encoded_frame->dependency ==
+        openscreen::cast::EncodedFrame::Dependency::kKeyFrame) {
       // Ten bytes should not be enough to decode the quanitizer value
       // for a Key frame.
       decoded_quantizer = ParseVpxHeaderQuantizer(encoded_data, 10);
diff --git a/media/cast/logging/log_event_dispatcher.cc b/media/cast/logging/log_event_dispatcher.cc
index d199026..418b55f7 100644
--- a/media/cast/logging/log_event_dispatcher.cc
+++ b/media/cast/logging/log_event_dispatcher.cc
@@ -4,12 +4,13 @@
 
 #include "media/cast/logging/log_event_dispatcher.h"
 
-#include <algorithm>
 #include <utility>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/location.h"
+#include "base/ranges/algorithm.h"
 #include "base/synchronization/waitable_event.h"
 #include "media/cast/cast_environment.h"
 
@@ -125,14 +126,12 @@
 }
 
 void LogEventDispatcher::Impl::Subscribe(RawEventSubscriber* subscriber) {
-  DCHECK(std::find(subscribers_.begin(), subscribers_.end(), subscriber) ==
-         subscribers_.end());
+  DCHECK(!base::Contains(subscribers_, subscriber));
   subscribers_.push_back(subscriber);
 }
 
 void LogEventDispatcher::Impl::Unsubscribe(RawEventSubscriber* subscriber) {
-  const auto it =
-      std::find(subscribers_.begin(), subscribers_.end(), subscriber);
+  const auto it = base::ranges::find(subscribers_, subscriber);
   DCHECK(it != subscribers_.end());
   subscribers_.erase(it);
 }
diff --git a/media/cast/net/cast_transport_impl_unittest.cc b/media/cast/net/cast_transport_impl_unittest.cc
index dc79060..6e9df49 100644
--- a/media/cast/net/cast_transport_impl_unittest.cc
+++ b/media/cast/net/cast_transport_impl_unittest.cc
@@ -22,6 +22,9 @@
 #include "media/cast/net/cast_transport_config.h"
 #include "media/cast/net/rtcp/rtcp_defines.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
+
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
 
 namespace media {
 namespace cast {
@@ -211,7 +214,7 @@
   fake_frame.frame_id = FrameId::first() + 1;
   fake_frame.referenced_frame_id = FrameId::first() + 1;
   fake_frame.rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(1));
-  fake_frame.dependency = EncodedFrame::KEY;
+  fake_frame.dependency = Dependency::kKeyFrame;
   fake_frame.data.resize(5000, ' ');
 
   transport_sender_->InsertFrame(kVideoSsrc, fake_frame);
@@ -259,7 +262,7 @@
   fake_frame.frame_id = FrameId::first() + 1;
   fake_frame.referenced_frame_id = FrameId::first() + 1;
   fake_frame.rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(1));
-  fake_frame.dependency = EncodedFrame::KEY;
+  fake_frame.dependency = Dependency::kKeyFrame;
   fake_frame.data.resize(5000, ' ');
 
   transport_sender_->InsertFrame(kVideoSsrc, fake_frame);
@@ -302,7 +305,7 @@
   fake_frame.frame_id = FrameId::first() + 1;
   fake_frame.referenced_frame_id = FrameId::first() + 1;
   fake_frame.rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(1));
-  fake_frame.dependency = EncodedFrame::KEY;
+  fake_frame.dependency = Dependency::kKeyFrame;
   fake_frame.data.resize(5000, ' ');
 
   transport_->SetPaused(true);
@@ -345,7 +348,7 @@
   fake_audio.frame_id = FrameId::first() + 1;
   fake_audio.referenced_frame_id = FrameId::first() + 1;
   fake_audio.reference_time = testing_clock_.NowTicks();
-  fake_audio.dependency = EncodedFrame::KEY;
+  fake_audio.dependency = Dependency::kKeyFrame;
   fake_audio.data.resize(100, ' ');
   transport_sender_->InsertFrame(kAudioSsrc, fake_audio);
   task_runner_->Sleep(base::Milliseconds(2));
@@ -368,7 +371,7 @@
   EncodedFrame fake_video;
   fake_video.frame_id = FrameId::first() + 1;
   fake_video.referenced_frame_id = FrameId::first() + 1;
-  fake_video.dependency = EncodedFrame::KEY;
+  fake_video.dependency = Dependency::kKeyFrame;
   fake_video.data.resize(5000, ' ');
   transport_sender_->InsertFrame(kVideoSsrc, fake_video);
   task_runner_->RunTasks();
diff --git a/media/cast/net/pacing/paced_sender.cc b/media/cast/net/pacing/paced_sender.cc
index 6d8a1fb..63f6984 100644
--- a/media/cast/net/pacing/paced_sender.cc
+++ b/media/cast/net/pacing/paced_sender.cc
@@ -6,6 +6,7 @@
 
 #include "base/big_endian.h"
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/numerics/safe_conversions.h"
 
@@ -299,8 +300,7 @@
 }
 
 bool PacedSender::IsHighPriority(const PacketKey& packet_key) const {
-  return std::find(priority_ssrcs_.begin(), priority_ssrcs_.end(),
-                   packet_key.ssrc) != priority_ssrcs_.end();
+  return base::Contains(priority_ssrcs_, packet_key.ssrc);
 }
 
 bool PacedSender::empty() const {
diff --git a/media/cast/net/rtp/rtp_packetizer.cc b/media/cast/net/rtp/rtp_packetizer.cc
index 24e3af22..9eb3f649 100644
--- a/media/cast/net/rtp/rtp_packetizer.cc
+++ b/media/cast/net/rtp/rtp_packetizer.cc
@@ -12,6 +12,7 @@
 #include "media/cast/common/encoded_frame.h"
 #include "media/cast/net/pacing/paced_sender.h"
 #include "media/cast/net/rtp/rtp_defines.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media {
 namespace cast {
@@ -99,14 +100,18 @@
                          frame.rtp_timestamp);
 
     // Build Cast header.
-    DCHECK_NE(frame.dependency, EncodedFrame::UNKNOWN_DEPENDENCY);
+    DCHECK_NE(frame.dependency,
+              openscreen::cast::EncodedFrame::Dependency::kUnknown);
     uint8_t byte0 = kCastReferenceFrameIdBitMask;
-    if (frame.dependency == EncodedFrame::KEY)
+    if (frame.dependency ==
+        openscreen::cast::EncodedFrame::Dependency::kKeyFrame)
       byte0 |= kCastKeyFrameBitMask;
+
     // Extensions only go on the first packet of the frame
     const uint16_t packet_id = static_cast<uint16_t>(packets.size());
     if (packet_id == 0)
       byte0 |= num_extensions;
+
     packet->data.push_back(byte0);
     packet->data.push_back(frame.frame_id.lower_8_bits());
     size_t start_size = packet->data.size();
diff --git a/media/cast/net/rtp/rtp_packetizer_unittest.cc b/media/cast/net/rtp/rtp_packetizer_unittest.cc
index b2c3191..f03aace 100644
--- a/media/cast/net/rtp/rtp_packetizer_unittest.cc
+++ b/media/cast/net/rtp/rtp_packetizer_unittest.cc
@@ -16,6 +16,7 @@
 #include "media/cast/net/rtp/packet_storage.h"
 #include "media/cast/net/rtp/rtp_parser.h"
 #include "testing/gmock/include/gmock/gmock.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media {
 namespace cast {
@@ -141,7 +142,8 @@
     pacer_->RegisterSsrc(config_.ssrc, false);
     rtp_packetizer_ = std::make_unique<RtpPacketizer>(
         pacer_.get(), &packet_storage_, config_);
-    video_frame_.dependency = EncodedFrame::DEPENDENT;
+    video_frame_.dependency =
+        openscreen::cast::EncodedFrame::Dependency::kDependent;
     video_frame_.frame_id = FrameId::first() + 1;
     video_frame_.referenced_frame_id = video_frame_.frame_id - 1;
     video_frame_.data.assign(kFrameSize, 123);
diff --git a/media/cast/sender/frame_sender_impl.cc b/media/cast/sender/frame_sender_impl.cc
index 24131db..5100402 100644
--- a/media/cast/sender/frame_sender_impl.cc
+++ b/media/cast/sender/frame_sender_impl.cc
@@ -18,6 +18,7 @@
 #include "media/cast/common/openscreen_conversion_helpers.h"
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/constants.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media::cast {
 namespace {
@@ -315,7 +316,8 @@
   const bool is_first_frame_to_be_sent = last_send_time_.is_null();
 
   if (picture_lost_at_receiver_ &&
-      (encoded_frame->dependency == EncodedFrame::KEY)) {
+      (encoded_frame->dependency ==
+       openscreen::cast::EncodedFrame::Dependency::kKeyFrame)) {
     picture_lost_at_receiver_ = false;
     DCHECK(frame_id > latest_acked_frame_id_);
     // Cancel sending remaining frames.
@@ -340,7 +342,9 @@
     ScheduleNextResendCheck();
   }
 
-  VLOG_IF(1, !is_audio_ && encoded_frame->dependency == EncodedFrame::KEY)
+  VLOG_IF(1, !is_audio_ &&
+                 encoded_frame->dependency ==
+                     openscreen::cast::EncodedFrame::Dependency::kKeyFrame)
       << SENDER_SSRC << "Sending encoded key frame, id=" << frame_id;
 
   std::unique_ptr<FrameEvent> encode_event(new FrameEvent());
@@ -350,7 +354,9 @@
   encode_event->rtp_timestamp = encoded_frame->rtp_timestamp;
   encode_event->frame_id = frame_id;
   encode_event->size = base::checked_cast<uint32_t>(encoded_frame->data.size());
-  encode_event->key_frame = encoded_frame->dependency == EncodedFrame::KEY;
+  encode_event->key_frame =
+      encoded_frame->dependency ==
+      openscreen::cast::EncodedFrame::Dependency::kKeyFrame;
   encode_event->target_bitrate = encoded_frame->encoder_bitrate;
   encode_event->encoder_cpu_utilization = encoded_frame->encoder_utilization;
   encode_event->idealized_bitrate_utilization = encoded_frame->lossiness;
diff --git a/media/cast/sender/openscreen_frame_sender.cc b/media/cast/sender/openscreen_frame_sender.cc
index 7d8f492..643c663b 100644
--- a/media/cast/sender/openscreen_frame_sender.cc
+++ b/media/cast/sender/openscreen_frame_sender.cc
@@ -20,7 +20,7 @@
 #include "media/cast/common/openscreen_conversion_helpers.h"
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/constants.h"
-
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 namespace media::cast {
 
 // The additional number of frames that can be in-flight when input exceeds the
@@ -196,7 +196,8 @@
 
   DCHECK(frame_id > last_sent_frame_id_) << "enqueued frames out of order.";
   last_sent_frame_id_ = frame_id;
-  if (!is_audio_ && encoded_frame->dependency == EncodedFrame::KEY) {
+  if (!is_audio_ && encoded_frame->dependency ==
+                        openscreen::cast::EncodedFrame::Dependency::kKeyFrame) {
     VLOG_WITH_SSRC(1) << "Sending encoded key frame, id=" << frame_id;
   }
 
@@ -207,7 +208,9 @@
   encode_event->rtp_timestamp = encoded_frame->rtp_timestamp;
   encode_event->frame_id = frame_id;
   encode_event->size = base::checked_cast<uint32_t>(encoded_frame->data.size());
-  encode_event->key_frame = encoded_frame->dependency == EncodedFrame::KEY;
+  encode_event->key_frame =
+      encoded_frame->dependency ==
+      openscreen::cast::EncodedFrame::Dependency::kKeyFrame;
   encode_event->target_bitrate = encoded_frame->encoder_bitrate;
   encode_event->encoder_cpu_utilization = encoded_frame->encoder_utilization;
   encode_event->idealized_bitrate_utilization = encoded_frame->lossiness;
diff --git a/media/cast/sender/video_sender.cc b/media/cast/sender/video_sender.cc
index 4042c851..e7194b5 100644
--- a/media/cast/sender/video_sender.cc
+++ b/media/cast/sender/video_sender.cc
@@ -20,6 +20,7 @@
 #include "media/cast/net/cast_transport_config.h"
 #include "media/cast/sender/openscreen_frame_sender.h"
 #include "media/cast/sender/performance_metrics_overlay.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 #include "third_party/openscreen/src/cast/streaming/sender.h"
 
 namespace media::cast {
@@ -366,7 +367,8 @@
     // this can misguide the producer of the input video frames.
     VideoCaptureFeedback feedback;
     feedback.resource_utilization =
-        encoded_frame->dependency == EncodedFrame::KEY
+        encoded_frame->dependency ==
+                openscreen::cast::EncodedFrame::Dependency::kKeyFrame
             ? std::min(1.0, attenuated_utilization)
             : attenuated_utilization;
     if (feedback_cb_)
diff --git a/media/cast/test/receiver/audio_decoder_unittest.cc b/media/cast/test/receiver/audio_decoder_unittest.cc
index 6a5a6a21..122a386d 100644
--- a/media/cast/test/receiver/audio_decoder_unittest.cc
+++ b/media/cast/test/receiver/audio_decoder_unittest.cc
@@ -21,6 +21,7 @@
 #include "media/cast/test/utility/audio_utility.h"
 #include "media/cast/test/utility/standalone_cast_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 #include "third_party/opus/src/include/opus.h"
 
 namespace media {
@@ -84,7 +85,8 @@
   void FeedMoreAudio(base::TimeDelta duration, int num_dropped_frames) {
     // Prepare a simulated EncodedFrame to feed into the AudioDecoder.
     std::unique_ptr<EncodedFrame> encoded_frame(new EncodedFrame());
-    encoded_frame->dependency = EncodedFrame::KEY;
+    encoded_frame->dependency =
+        openscreen::cast::EncodedFrame::Dependency::kKeyFrame;
     encoded_frame->frame_id = last_frame_id_ + 1 + num_dropped_frames;
     encoded_frame->referenced_frame_id = encoded_frame->frame_id;
     last_frame_id_ = encoded_frame->frame_id;
diff --git a/media/cast/test/receiver/frame_buffer.cc b/media/cast/test/receiver/frame_buffer.cc
index b9720e9e2..755ad54 100644
--- a/media/cast/test/receiver/frame_buffer.cc
+++ b/media/cast/test/receiver/frame_buffer.cc
@@ -6,6 +6,9 @@
 
 #include "base/check_op.h"
 #include "media/cast/common/encoded_frame.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
+
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
 
 namespace media {
 namespace cast {
@@ -68,12 +71,13 @@
     return false;
 
   // Frame is complete -> construct.
-  if (is_key_frame_)
-    frame->dependency = EncodedFrame::KEY;
-  else if (frame_id_ == last_referenced_frame_id_)
-    frame->dependency = EncodedFrame::INDEPENDENT;
-  else
-    frame->dependency = EncodedFrame::DEPENDENT;
+  if (is_key_frame_) {
+    frame->dependency = Dependency::kKeyFrame;
+  } else if (frame_id_ == last_referenced_frame_id_) {
+    frame->dependency = Dependency::kIndependent;
+  } else {
+    frame->dependency = Dependency::kDependent;
+  }
   frame->frame_id = frame_id_;
   frame->referenced_frame_id = last_referenced_frame_id_;
   frame->rtp_timestamp = rtp_timestamp_;
diff --git a/media/cast/test/receiver/frame_buffer_unittest.cc b/media/cast/test/receiver/frame_buffer_unittest.cc
index 5a15db7..2ab9be3a 100644
--- a/media/cast/test/receiver/frame_buffer_unittest.cc
+++ b/media/cast/test/receiver/frame_buffer_unittest.cc
@@ -8,6 +8,7 @@
 #include "media/cast/net/cast_transport_defines.h"
 #include "media/cast/test/receiver/frame_buffer.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media {
 namespace cast {
@@ -39,7 +40,8 @@
   buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
   EncodedFrame frame;
   EXPECT_TRUE(buffer_.AssembleEncodedFrame(&frame));
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(openscreen::cast::EncodedFrame::Dependency::kKeyFrame,
+            frame.dependency);
   EXPECT_EQ(FrameId::first() + 5, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 5, frame.referenced_frame_id);
   EXPECT_EQ(3000u, frame.rtp_timestamp.lower_32_bits());
diff --git a/media/cast/test/receiver/framer_unittest.cc b/media/cast/test/receiver/framer_unittest.cc
index b76da684..a9bae37 100644
--- a/media/cast/test/receiver/framer_unittest.cc
+++ b/media/cast/test/receiver/framer_unittest.cc
@@ -10,6 +10,9 @@
 #include "media/cast/test/mock_rtp_payload_feedback.h"
 #include "media/cast/test/receiver/framer.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
+
+using Dependency = openscreen::cast::EncodedFrame::Dependency;
 
 namespace media {
 namespace cast {
@@ -66,7 +69,7 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_TRUE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first() + 1, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 1, frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
@@ -89,7 +92,7 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_FALSE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first(), frame.frame_id);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
@@ -149,7 +152,7 @@
   EXPECT_TRUE(complete);
   EXPECT_FALSE(duplicate);
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_FALSE(multiple);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
 
@@ -160,7 +163,7 @@
   EXPECT_FALSE(complete);
   EXPECT_TRUE(duplicate);
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first(), frame.frame_id);
   EXPECT_FALSE(multiple);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
@@ -194,7 +197,7 @@
   EXPECT_TRUE(complete);
   EXPECT_FALSE(duplicate);
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
-  EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
+  EXPECT_EQ(Dependency::kDependent, frame.dependency);
   EXPECT_EQ(FrameId::first() + 1, frame.frame_id);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
   EXPECT_FALSE(multiple);
@@ -206,7 +209,7 @@
   EXPECT_FALSE(complete);
   EXPECT_TRUE(duplicate);
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
-  EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
+  EXPECT_EQ(Dependency::kDependent, frame.dependency);
   EXPECT_EQ(FrameId::first() + 1, frame.frame_id);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
   EXPECT_FALSE(multiple);
@@ -229,7 +232,7 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_FALSE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first(), frame.frame_id);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
@@ -313,7 +316,7 @@
   rtp_header_.reference_frame_id = FrameId::first();
   framer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_, &duplicate);
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first(), frame.frame_id);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
   EXPECT_FALSE(multiple);
@@ -321,14 +324,14 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_TRUE(multiple);
-  EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
+  EXPECT_EQ(Dependency::kDependent, frame.dependency);
   EXPECT_EQ(FrameId::first() + 1, frame.frame_id);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_FALSE(next_frame);
   EXPECT_FALSE(multiple);
-  EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
+  EXPECT_EQ(Dependency::kDependent, frame.dependency);
   EXPECT_EQ(FrameId::first() + 4, frame.frame_id);
   EXPECT_EQ(FrameId::first(), frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
@@ -345,7 +348,7 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_FALSE(multiple);
-  EXPECT_EQ(EncodedFrame::DEPENDENT, frame.dependency);
+  EXPECT_EQ(Dependency::kDependent, frame.dependency);
   EXPECT_EQ(FrameId::first() + 5, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 4, frame.referenced_frame_id);
 }
@@ -364,7 +367,7 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_FALSE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first() + 254, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 254, frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
@@ -381,7 +384,7 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_TRUE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first() + 255, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 255, frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
@@ -389,7 +392,7 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_FALSE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first() + 256, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 256, frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
@@ -409,7 +412,7 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_FALSE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first() + 253, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 253, frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
@@ -426,14 +429,14 @@
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_FALSE(next_frame);
   EXPECT_TRUE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first() + 255, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 255, frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
   EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple));
   EXPECT_TRUE(next_frame);
   EXPECT_FALSE(multiple);
-  EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
+  EXPECT_EQ(Dependency::kKeyFrame, frame.dependency);
   EXPECT_EQ(FrameId::first() + 256, frame.frame_id);
   EXPECT_EQ(FrameId::first() + 256, frame.referenced_frame_id);
   framer_.ReleaseFrame(frame.frame_id);
diff --git a/media/cast/test/receiver/video_decoder_unittest.cc b/media/cast/test/receiver/video_decoder_unittest.cc
index aee935de..2502a69 100644
--- a/media/cast/test/receiver/video_decoder_unittest.cc
+++ b/media/cast/test/receiver/video_decoder_unittest.cc
@@ -22,6 +22,7 @@
 #include "media/cast/test/utility/standalone_cast_environment.h"
 #include "media/cast/test/utility/video_utility.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
 
 namespace media {
 namespace cast {
@@ -95,7 +96,8 @@
     vp8_encoder_.Encode(video_frame, reference_time, encoded_frame.get());
     // Rewrite frame IDs for testing purposes.
     encoded_frame->frame_id = last_frame_id_ + 1 + num_dropped_frames;
-    if (encoded_frame->dependency == EncodedFrame::KEY)
+    if (encoded_frame->dependency ==
+        openscreen::cast::EncodedFrame::Dependency::kKeyFrame)
       encoded_frame->referenced_frame_id = encoded_frame->frame_id;
     else
       encoded_frame->referenced_frame_id = encoded_frame->frame_id - 1;
diff --git a/media/device_monitors/device_monitor_mac.mm b/media/device_monitors/device_monitor_mac.mm
index ca8ac08..d704965 100644
--- a/media/device_monitors/device_monitor_mac.mm
+++ b/media/device_monitors/device_monitor_mac.mm
@@ -5,13 +5,16 @@
 #include "media/device_monitors/device_monitor_mac.h"
 
 #include <AVFoundation/AVFoundation.h>
+
 #include <set>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/mac/scoped_nsobject.h"
 #include "base/memory/raw_ptr.h"
+#include "base/ranges/algorithm.h"
 #include "base/task/task_runner_util.h"
 #include "base/threading/thread_checker.h"
 
@@ -92,7 +95,7 @@
   std::vector<DeviceInfo>::const_iterator it;
   for (it = snapshot_devices.begin(); it != snapshot_devices.end(); ++it) {
     std::vector<DeviceInfo>::iterator cached_devices_iterator =
-        std::find(cached_devices_.begin(), cached_devices_.end(), *it);
+        base::ranges::find(cached_devices_, *it);
     if (cached_devices_iterator == cached_devices_.end()) {
       video_device_added |= ((it->type() == DeviceInfo::kVideo) ||
                              (it->type() == DeviceInfo::kMuxed));
@@ -374,8 +377,7 @@
   DCHECK(_mainThreadChecker.CalledOnValidThread());
   DCHECK(device != nil);
   // Skip this device if there are already observers connected to it.
-  if (std::find(_monitoredDevices.begin(), _monitoredDevices.end(), device) !=
-      _monitoredDevices.end()) {
+  if (base::Contains(_monitoredDevices, device)) {
     return;
   }
   [device addObserver:self
@@ -394,7 +396,7 @@
   DCHECK(device != nil);
 
   std::set<base::scoped_nsobject<AVCaptureDevice>>::iterator found =
-      std::find(_monitoredDevices.begin(), _monitoredDevices.end(), device);
+      base::ranges::find(_monitoredDevices, device);
   DCHECK(found != _monitoredDevices.end());
   [self removeObservers:*found];
   _monitoredDevices.erase(found);
diff --git a/media/filters/offloading_video_decoder.cc b/media/filters/offloading_video_decoder.cc
index aebc0e4..609e9cb7 100644
--- a/media/filters/offloading_video_decoder.cc
+++ b/media/filters/offloading_video_decoder.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/synchronization/atomic_flag.h"
 #include "base/task/sequenced_task_runner.h"
 #include "base/task/thread_pool.h"
@@ -94,8 +95,7 @@
   const bool disable_offloading =
       config.is_encrypted() ||
       config.coded_size().width() < min_offloading_width_ ||
-      std::find(supported_codecs_.begin(), supported_codecs_.end(),
-                config.codec()) == supported_codecs_.end();
+      !base::Contains(supported_codecs_, config.codec());
 
   if (initialized_) {
     initialized_ = false;
diff --git a/media/filters/source_buffer_state.cc b/media/filters/source_buffer_state.cc
index d101d58..a3c279c 100644
--- a/media/filters/source_buffer_state.cc
+++ b/media/filters/source_buffer_state.cc
@@ -8,6 +8,7 @@
 
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
@@ -662,8 +663,8 @@
                << " config: " << audio_config.AsHumanReadableString();
       DCHECK(audio_config.IsValidConfig());
 
-      const auto& it = std::find(expected_acodecs.begin(),
-                                 expected_acodecs.end(), audio_config.codec());
+      const auto& it =
+          base::ranges::find(expected_acodecs, audio_config.codec());
       if (it == expected_acodecs.end()) {
         MEDIA_LOG(ERROR, media_log_) << "Audio stream codec "
                                      << GetCodecName(audio_config.codec())
@@ -730,8 +731,8 @@
       }
 #endif  // BUILDFLAG(ENABLE_PLATFORM_ENCRYPTED_DOLBY_VISION)
 
-      const auto& it = std::find(expected_vcodecs.begin(),
-                                 expected_vcodecs.end(), video_config.codec());
+      const auto& it =
+          base::ranges::find(expected_vcodecs, video_config.codec());
       if (it == expected_vcodecs.end()) {
         MEDIA_LOG(ERROR, media_log_) << "Video stream codec "
                                      << GetCodecName(video_config.codec())
diff --git a/media/fuchsia/audio/fake_audio_capturer.cc b/media/fuchsia/audio/fake_audio_capturer.cc
index 46c6ce3d..b4fe16a 100644
--- a/media/fuchsia/audio/fake_audio_capturer.cc
+++ b/media/fuchsia/audio/fake_audio_capturer.cc
@@ -10,6 +10,7 @@
 #include "base/fuchsia/fuchsia_logging.h"
 #include "base/logging.h"
 #include "base/notreached.h"
+#include "base/ranges/algorithm.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -43,7 +44,7 @@
   EXPECT_TRUE(is_active_);
 
   // Find unused packet.
-  auto it = std::find(packets_usage_.begin(), packets_usage_.end(), false);
+  auto it = base::ranges::find(packets_usage_, false);
 
   // Currently tests don't try to send more than 2 packets and the buffer
   // always will have space for at least 2 packets.
diff --git a/media/gpu/android/codec_allocator.cc b/media/gpu/android/codec_allocator.cc
index d915a4a..07d4477 100644
--- a/media/gpu/android/codec_allocator.cc
+++ b/media/gpu/android/codec_allocator.cc
@@ -6,12 +6,12 @@
 
 #include <stddef.h>
 
-#include <algorithm>
 #include <memory>
 
 #include "base/callback_helpers.h"
 #include "base/logging.h"
 #include "base/no_destructor.h"
+#include "base/ranges/algorithm.h"
 #include "base/task/task_runner_util.h"
 #include "base/task/task_traits.h"
 #include "base/task/thread_pool.h"
@@ -215,8 +215,8 @@
 void CodecAllocator::CompletePendingOperation(base::TimeTicks start_time) {
   // Note: This intentionally only erases the first instance, since there may be
   // multiple instances of the same value.
-  pending_operations_.erase(std::find(pending_operations_.begin(),
-                                      pending_operations_.end(), start_time));
+  pending_operations_.erase(
+      base::ranges::find(pending_operations_, start_time));
 }
 
 }  // namespace media
diff --git a/media/gpu/android/maybe_render_early_manager.cc b/media/gpu/android/maybe_render_early_manager.cc
index c11593db..a5223254 100644
--- a/media/gpu/android/maybe_render_early_manager.cc
+++ b/media/gpu/android/maybe_render_early_manager.cc
@@ -4,8 +4,7 @@
 
 #include "media/gpu/android/maybe_render_early_manager.h"
 
-#include <algorithm>
-
+#include "base/containers/contains.h"
 #include "base/containers/cxx20_erase.h"
 #include "base/memory/weak_ptr.h"
 #include "base/threading/sequence_bound.h"
@@ -35,8 +34,7 @@
     codec_image_holder->codec_image_raw()->AddUnusedCB(base::BindOnce(
         &GpuMaybeRenderEarlyImpl::OnImageUnused, weak_factory_.GetWeakPtr()));
 
-    DCHECK(std::find(images_.begin(), images_.end(),
-                     codec_image_holder->codec_image_raw()) == images_.end());
+    DCHECK(!base::Contains(images_, codec_image_holder->codec_image_raw()));
     images_.push_back(codec_image_holder->codec_image_raw());
 
     // Add |image| to our current image group.  This makes sure that any overlay
@@ -53,7 +51,7 @@
  private:
   void OnImageUnused(CodecImage* image) {
     // |image| is no longer used, so try to render a new image speculatively.
-    DCHECK(std::find(images_.begin(), images_.end(), image) != images_.end());
+    DCHECK(base::Contains(images_, image));
     // Remember that |image_group_| might not be the same one that |image|
     // belongs to.
     base::Erase(images_, image);
diff --git a/media/gpu/chromeos/generic_dmabuf_video_frame_mapper.cc b/media/gpu/chromeos/generic_dmabuf_video_frame_mapper.cc
index 7448b286..1883444 100644
--- a/media/gpu/chromeos/generic_dmabuf_video_frame_mapper.cc
+++ b/media/gpu/chromeos/generic_dmabuf_video_frame_mapper.cc
@@ -6,11 +6,11 @@
 
 #include <sys/mman.h>
 
-#include <algorithm>
 #include <utility>
 #include <vector>
 
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/memory/ptr_util.h"
 #include "media/gpu/macros.h"
 
@@ -83,8 +83,7 @@
       // Compressed format.
       PIXEL_FORMAT_MJPEG,
   };
-  return std::find(std::cbegin(supported_formats), std::cend(supported_formats),
-                   format) != std::cend(supported_formats);
+  return base::Contains(supported_formats, format);
 }
 
 }  // namespace
diff --git a/media/gpu/mac/vt_video_encode_accelerator_mac.cc b/media/gpu/mac/vt_video_encode_accelerator_mac.cc
index 678971b..1020df4 100644
--- a/media/gpu/mac/vt_video_encode_accelerator_mac.cc
+++ b/media/gpu/mac/vt_video_encode_accelerator_mac.cc
@@ -6,11 +6,13 @@
 
 #include <memory>
 
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/mac/foundation_util.h"
 #include "base/mac/mac_logging.h"
 #include "base/memory/shared_memory_mapping.h"
 #include "base/memory/unsafe_shared_memory_region.h"
+#include "base/numerics/safe_conversions.h"
 #include "base/task/thread_pool.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
@@ -60,19 +62,60 @@
   return kVTProfileLevel_H264_Baseline_AutoLevel;
 }
 
+base::ScopedCFTypeRef<CFArrayRef> CreateRateLimitArray(const Bitrate& bitrate) {
+  std::vector<CFNumberRef> limits;
+  switch (bitrate.mode()) {
+    case Bitrate::Mode::kConstant: {
+      // CBR should be enforces with granularity of a second.
+      float target_interval = 1.0;
+      int32_t target_bitrate = bitrate.target_bps() / kBitsPerByte;
+
+      limits.push_back(
+          CFNumberCreate(nullptr, kCFNumberSInt32Type, &target_bitrate));
+      limits.push_back(
+          CFNumberCreate(nullptr, kCFNumberFloat32Type, &target_interval));
+      break;
+    }
+    case Bitrate::Mode::kVariable: {
+      // 5 seconds should be an okay interval for VBR to enforce the long-term
+      // limit.
+      float avg_interval = 5.0;
+      int32_t avg_bitrate = base::saturated_cast<int32_t>(
+          bitrate.target_bps() / kBitsPerByte * avg_interval);
+
+      // And the peak bitrate is measured per-second in a way similar to CBR.
+      float peak_interval = 1.0;
+      int32_t peak_bitrate = bitrate.peak_bps() / kBitsPerByte;
+      limits.push_back(
+          CFNumberCreate(nullptr, kCFNumberSInt32Type, &peak_bitrate));
+      limits.push_back(
+          CFNumberCreate(nullptr, kCFNumberFloat32Type, &peak_interval));
+      limits.push_back(
+          CFNumberCreate(nullptr, kCFNumberSInt32Type, &avg_bitrate));
+      limits.push_back(
+          CFNumberCreate(nullptr, kCFNumberFloat32Type, &avg_interval));
+      break;
+    }
+
+    default:
+      NOTREACHED();
+  }
+
+  base::ScopedCFTypeRef<CFArrayRef> result(CFArrayCreate(
+      kCFAllocatorDefault, reinterpret_cast<const void**>(limits.data()),
+      limits.size(), &kCFTypeArrayCallBacks));
+  for (auto* number : limits)
+    CFRelease(number);
+  return result;
+}
+
 }  // namespace
 
 struct VTVideoEncodeAccelerator::InProgressFrameEncode {
-  InProgressFrameEncode() = delete;
-
-  InProgressFrameEncode(base::TimeDelta rtp_timestamp, base::TimeTicks ref_time)
-      : timestamp(rtp_timestamp), reference_time(ref_time) {}
-
-  InProgressFrameEncode(const InProgressFrameEncode&) = delete;
-  InProgressFrameEncode& operator=(const InProgressFrameEncode&) = delete;
+  InProgressFrameEncode(base::TimeDelta rtp_timestamp)
+      : timestamp(rtp_timestamp) {}
 
   const base::TimeDelta timestamp;
-  const base::TimeTicks reference_time;
 };
 
 struct VTVideoEncodeAccelerator::EncodeOutput {
@@ -179,8 +222,7 @@
         << VideoPixelFormatToString(config.input_format);
     return false;
   }
-  if (std::find(std::begin(kSupportedProfiles), std::end(kSupportedProfiles),
-                config.output_profile) == std::end(kSupportedProfiles)) {
+  if (!base::Contains(kSupportedProfiles, config.output_profile)) {
     MEDIA_LOG(ERROR, media_log.get()) << "Output profile not supported= "
                                       << GetProfileName(config.output_profile);
     return false;
@@ -318,14 +360,12 @@
           kVTEncodeFrameOptionKey_ForceKeyFrame,
           force_keyframe ? kCFBooleanTrue : kCFBooleanFalse);
 
-  base::TimeTicks ref_time =
-      frame->metadata().reference_time.value_or(base::TimeTicks::Now());
   auto timestamp_cm =
       CMTimeMake(frame->timestamp().InMicroseconds(), USEC_PER_SEC);
   // Wrap information we'll need after the frame is encoded in a heap object.
   // We'll get the pointer back from the VideoToolbox completion callback.
   std::unique_ptr<InProgressFrameEncode> request(
-      new InProgressFrameEncode(frame->timestamp(), ref_time));
+      new InProgressFrameEncode(frame->timestamp()));
 
   if (bitrate_.mode() == Bitrate::Mode::kConstant) {
     // In CBR mode, we adjust bitrate before every encode based on past history
@@ -396,7 +436,7 @@
   bitrate_ = bitrate;
 }
 
-void VTVideoEncodeAccelerator::SetAdjustedConstantBitrate(int32_t bitrate) {
+void VTVideoEncodeAccelerator::SetAdjustedConstantBitrate(uint32_t bitrate) {
   DCHECK(encoder_thread_task_runner_->BelongsToCurrentThread());
 
   if (bitrate == encoder_set_bitrate_)
@@ -406,11 +446,11 @@
   video_toolbox::SessionPropertySetter session_property_setter(
       compression_session_);
   [[maybe_unused]] bool rv = session_property_setter.Set(
-      kVTCompressionPropertyKey_AverageBitRate, encoder_set_bitrate_);
+      kVTCompressionPropertyKey_AverageBitRate,
+      base::saturated_cast<int32_t>(encoder_set_bitrate_));
   rv &= session_property_setter.Set(
       kVTCompressionPropertyKey_DataRateLimits,
-      video_toolbox::ArrayWithIntegerAndFloat(
-          encoder_set_bitrate_ / kBitsPerByte, 1.0f));
+      CreateRateLimitArray(Bitrate::ConstantBitrate(bitrate)));
   DLOG_IF(ERROR, !rv)
       << "Couldn't change bitrate parameters of encode session.";
 }
@@ -424,10 +464,8 @@
   [[maybe_unused]] bool rv =
       session_property_setter.Set(kVTCompressionPropertyKey_AverageBitRate,
                                   static_cast<int32_t>(bitrate.target_bps()));
-  rv &=
-      session_property_setter.Set(kVTCompressionPropertyKey_DataRateLimits,
-                                  video_toolbox::ArrayWithIntegerAndFloat(
-                                      bitrate.peak_bps() / kBitsPerByte, 1.0f));
+  rv &= session_property_setter.Set(kVTCompressionPropertyKey_DataRateLimits,
+                                    CreateRateLimitArray(bitrate));
   DLOG_IF(ERROR, !rv)
       << "Couldn't change bitrate parameters of encode session.";
 }
diff --git a/media/gpu/mac/vt_video_encode_accelerator_mac.h b/media/gpu/mac/vt_video_encode_accelerator_mac.h
index 533b40d..b1fd86a 100644
--- a/media/gpu/mac/vt_video_encode_accelerator_mac.h
+++ b/media/gpu/mac/vt_video_encode_accelerator_mac.h
@@ -70,7 +70,7 @@
   void DestroyTask();
 
   // Helper functions to set bitrate.
-  void SetAdjustedConstantBitrate(int32_t bitrate);
+  void SetAdjustedConstantBitrate(uint32_t bitrate);
   void SetVariableBitrate(const Bitrate& bitrate);
 
   // Helper function to notify the client of an error on |client_task_runner_|.
@@ -125,8 +125,8 @@
   // bitrate mode no adjustments are needed.
   // Bitrate adjuster used to fix VideoToolbox's inconsistent bitrate issues.
   webrtc::BitrateAdjuster bitrate_adjuster_;
-  int32_t target_bitrate_ = 0;       // User for CBR only
-  int32_t encoder_set_bitrate_ = 0;  // User for CBR only
+  uint32_t target_bitrate_ = 0;       // User for CBR only
+  uint32_t encoder_set_bitrate_ = 0;  // User for CBR only
 
   // If True, the encoder fails initialization if setting of session's property
   // kVTCompressionPropertyKey_MaxFrameDelayCount returns an error.
diff --git a/media/gpu/test/video_encoder/bitstream_file_writer.cc b/media/gpu/test/video_encoder/bitstream_file_writer.cc
index c33e546e..dd61384 100644
--- a/media/gpu/test/video_encoder/bitstream_file_writer.cc
+++ b/media/gpu/test/video_encoder/bitstream_file_writer.cc
@@ -8,6 +8,7 @@
 #include "base/files/file_util.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
+#include "base/ranges/algorithm.h"
 #include "media/gpu/test/video_test_helpers.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -111,9 +112,8 @@
   CHECK_LE(spatial_layer_resolutions.size(), spatial_layer_resolutions_.size());
 
   original_spatial_indices_.resize(spatial_layer_resolutions.size());
-  auto begin = std::find(spatial_layer_resolutions_.begin(),
-                         spatial_layer_resolutions_.end(),
-                         spatial_layer_resolutions.front());
+  auto begin = base::ranges::find(spatial_layer_resolutions_,
+                                  spatial_layer_resolutions.front());
   CHECK(begin != spatial_layer_resolutions_.end());
   uint8_t sid_offset = begin - spatial_layer_resolutions_.begin();
   for (size_t i = 0; i < spatial_layer_resolutions.size(); ++i) {
diff --git a/media/gpu/test/video_encoder/bitstream_validator.cc b/media/gpu/test/video_encoder/bitstream_validator.cc
index e479bb2..6391053c 100644
--- a/media/gpu/test/video_encoder/bitstream_validator.cc
+++ b/media/gpu/test/video_encoder/bitstream_validator.cc
@@ -10,6 +10,7 @@
 #include "base/callback_helpers.h"
 #include "base/logging.h"
 #include "base/memory/ptr_util.h"
+#include "base/ranges/algorithm.h"
 #include "base/synchronization/waitable_event.h"
 #include "media/base/decoder_buffer.h"
 #include "media/base/media_log.h"
@@ -159,9 +160,8 @@
   CHECK_LE(spatial_layer_resolutions.size(), spatial_layer_resolutions_.size());
 
   original_spatial_indices_.resize(spatial_layer_resolutions.size());
-  auto begin = std::find(spatial_layer_resolutions_.begin(),
-                         spatial_layer_resolutions_.end(),
-                         spatial_layer_resolutions.front());
+  auto begin = base::ranges::find(spatial_layer_resolutions_,
+                                  spatial_layer_resolutions.front());
   CHECK(begin != spatial_layer_resolutions_.end());
   uint8_t sid_offset = begin - spatial_layer_resolutions_.begin();
   for (size_t i = 0; i < spatial_layer_resolutions.size(); ++i) {
diff --git a/media/gpu/v4l2/generic_v4l2_device.cc b/media/gpu/v4l2/generic_v4l2_device.cc
index b1c42a5..fa9a95b 100644
--- a/media/gpu/v4l2/generic_v4l2_device.cc
+++ b/media/gpu/v4l2/generic_v4l2_device.cc
@@ -15,9 +15,9 @@
 #include <sys/ioctl.h>
 #include <sys/mman.h>
 
-#include <algorithm>
 #include <memory>
 
+#include "base/containers/contains.h"
 #include "base/files/scoped_file.h"
 #include "base/posix/eintr_wrapper.h"
 #include "base/strings/stringprintf.h"
@@ -226,11 +226,8 @@
 #endif
   };
 
-  return std::find(
-             kEGLImageDrmFmtsSupported,
-             kEGLImageDrmFmtsSupported + std::size(kEGLImageDrmFmtsSupported),
-             V4L2PixFmtToDrmFormat(fourcc.ToV4L2PixFmt())) !=
-         kEGLImageDrmFmtsSupported + std::size(kEGLImageDrmFmtsSupported);
+  return base::Contains(kEGLImageDrmFmtsSupported,
+                        V4L2PixFmtToDrmFormat(fourcc.ToV4L2PixFmt()));
 }
 
 EGLImageKHR GenericV4L2Device::CreateEGLImage(
@@ -544,8 +541,7 @@
   const Devices& devices = GetDevicesForType(type);
 
   for (const auto& device : devices) {
-    if (std::find(device.second.begin(), device.second.end(), pixfmt) !=
-        device.second.end())
+    if (base::Contains(device.second, pixfmt))
       return device.first;
   }
 
diff --git a/media/gpu/v4l2/v4l2_vda_helpers.cc b/media/gpu/v4l2/v4l2_vda_helpers.cc
index f8cbde5..baaca9c 100644
--- a/media/gpu/v4l2/v4l2_vda_helpers.cc
+++ b/media/gpu/v4l2/v4l2_vda_helpers.cc
@@ -5,6 +5,8 @@
 #include "media/gpu/v4l2/v4l2_vda_helpers.h"
 
 #include "base/bind.h"
+#include "base/containers/contains.h"
+#include "base/ranges/algorithm.h"
 #include "media/base/color_plane_layout.h"
 #include "media/base/video_codecs.h"
 #include "media/gpu/chromeos/fourcc.h"
@@ -24,9 +26,7 @@
   memset(&fmtdesc, 0, sizeof(fmtdesc));
   fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
   while (vda_device->Ioctl(VIDIOC_ENUM_FMT, &fmtdesc) == 0) {
-    if (std::find(processor_input_formats.begin(),
-                  processor_input_formats.end(),
-                  fmtdesc.pixelformat) != processor_input_formats.end()) {
+    if (base::Contains(processor_input_formats, fmtdesc.pixelformat)) {
       DVLOGF(3) << "Image processor input format=" << fmtdesc.description;
       return Fourcc::FromV4L2PixFmt(fmtdesc.pixelformat);
     }
@@ -41,10 +41,8 @@
   static constexpr uint32_t kPreferredFormats[] = {V4L2_PIX_FMT_NV12,
                                                    V4L2_PIX_FMT_YVU420};
   auto preferred_formats_first = [](uint32_t a, uint32_t b) -> bool {
-    auto* iter_a = std::find(std::begin(kPreferredFormats),
-                             std::end(kPreferredFormats), a);
-    auto* iter_b = std::find(std::begin(kPreferredFormats),
-                             std::end(kPreferredFormats), b);
+    auto* iter_a = base::ranges::find(kPreferredFormats, a);
+    auto* iter_b = base::ranges::find(kPreferredFormats, b);
     return iter_a < iter_b;
   };
 
diff --git a/media/gpu/v4l2/v4l2_video_decoder_backend_stateful.cc b/media/gpu/v4l2/v4l2_video_decoder_backend_stateful.cc
index 127a78b3..b18d655 100644
--- a/media/gpu/v4l2/v4l2_video_decoder_backend_stateful.cc
+++ b/media/gpu/v4l2/v4l2_video_decoder_backend_stateful.cc
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 #include "media/gpu/v4l2/v4l2_video_decoder_backend_stateful.h"
-#include <cstddef>
 
+#include <cstddef>
 #include <memory>
 #include <tuple>
 #include <utility>
@@ -743,8 +743,7 @@
     for (const auto& entry : profiles)
       supported_profiles_.push_back(entry.profile);
   }
-  return std::find(supported_profiles_.begin(), supported_profiles_.end(),
-                   profile) != supported_profiles_.end();
+  return base::Contains(supported_profiles_, profile);
 }
 
 bool V4L2StatefulVideoDecoderBackend::StopInputQueueOnResChange() const {
diff --git a/media/gpu/windows/mf_audio_encoder.cc b/media/gpu/windows/mf_audio_encoder.cc
index ad9dec3..049cef5 100644
--- a/media/gpu/windows/mf_audio_encoder.cc
+++ b/media/gpu/windows/mf_audio_encoder.cc
@@ -12,9 +12,11 @@
 #include <string.h>
 #include <wmcodecdsp.h>
 #include <wrl/client.h>
+
 #include <utility>
 
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/memory/weak_ptr.h"
 #include "base/task/single_thread_task_runner.h"
@@ -78,8 +80,7 @@
   if (options.codec != AudioCodec::kAAC)
     return EncoderStatus::Codes::kEncoderUnsupportedCodec;
 
-  if (std::find(kSupportedSampleRates.begin(), kSupportedSampleRates.end(),
-                options.sample_rate) == kSupportedSampleRates.end()) {
+  if (!base::Contains(kSupportedSampleRates, options.sample_rate)) {
     return EncoderStatus::Codes::kEncoderUnsupportedConfig;
   }
 
@@ -102,8 +103,7 @@
   }
 
   *bitrate = options.bitrate.value_or(kDefaultBitrate);
-  if (std::find(kSupportedBitrates.begin(), kSupportedBitrates.end(),
-                *bitrate) == kSupportedBitrates.end()) {
+  if (!base::Contains(kSupportedBitrates, *bitrate)) {
     return EncoderStatus::Codes::kEncoderUnsupportedConfig;
   }
 
diff --git a/media/midi/midi_manager_mac.cc b/media/midi/midi_manager_mac.cc
index 7077358..45c7893d 100644
--- a/media/midi/midi_manager_mac.cc
+++ b/media/midi/midi_manager_mac.cc
@@ -13,6 +13,7 @@
 #include <CoreAudio/HostTime.h>
 
 #include "base/bind.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/task/single_thread_task_runner.h"
@@ -234,7 +235,7 @@
         static_cast<MIDIEndpointRef>(notification->child);
     if (notification->childType == kMIDIObjectType_Source) {
       // Attaching device is an input device.
-      auto it = std::find(sources_.begin(), sources_.end(), endpoint);
+      auto it = base::ranges::find(sources_, endpoint);
       if (it == sources_.end()) {
         mojom::PortInfo info = GetPortInfoFromEndpoint(endpoint);
         // If the device disappears before finishing queries, mojom::PortInfo
@@ -252,7 +253,7 @@
       }
     } else if (notification->childType == kMIDIObjectType_Destination) {
       // Attaching device is an output device.
-      auto it = std::find(destinations_.begin(), destinations_.end(), endpoint);
+      auto it = base::ranges::find(destinations_, endpoint);
       if (it == destinations_.end()) {
         mojom::PortInfo info = GetPortInfoFromEndpoint(endpoint);
         // Skip cases that queries are not finished correctly.
@@ -272,12 +273,12 @@
         static_cast<MIDIEndpointRef>(notification->child);
     if (notification->childType == kMIDIObjectType_Source) {
       // Detaching device is an input device.
-      auto it = std::find(sources_.begin(), sources_.end(), endpoint);
+      auto it = base::ranges::find(sources_, endpoint);
       if (it != sources_.end())
         SetInputPortState(it - sources_.begin(), PortState::DISCONNECTED);
     } else if (notification->childType == kMIDIObjectType_Destination) {
       // Detaching device is an output device.
-      auto it = std::find(destinations_.begin(), destinations_.end(), endpoint);
+      auto it = base::ranges::find(destinations_, endpoint);
       if (it != destinations_.end())
         SetOutputPortState(it - destinations_.begin(), PortState::DISCONNECTED);
     }
diff --git a/media/mojo/services/watch_time_recorder_unittest.cc b/media/mojo/services/watch_time_recorder_unittest.cc
index 0186530..d0388c6e 100644
--- a/media/mojo/services/watch_time_recorder_unittest.cc
+++ b/media/mojo/services/watch_time_recorder_unittest.cc
@@ -5,12 +5,14 @@
 #include "media/mojo/services/watch_time_recorder.h"
 
 #include <stddef.h>
+
 #include <memory>
 #include <utility>
 #include <vector>
 
 #include "base/bind.h"
 #include "base/callback_helpers.h"
+#include "base/containers/contains.h"
 #include "base/hash/hash.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
@@ -110,12 +112,11 @@
           ConvertWatchTimeKeyToStringForUma(static_cast<WatchTimeKey>(i));
       if (test_key.empty())
         continue;
-      auto it = std::find(keys.begin(), keys.end(), test_key);
-      if (it == keys.end()) {
-        histogram_tester_->ExpectTotalCount(test_key, 0);
-      } else {
+      if (base::Contains(keys, test_key)) {
         histogram_tester_->ExpectUniqueSample(test_key, value.InMilliseconds(),
                                               1);
+      } else {
+        histogram_tester_->ExpectTotalCount(test_key, 0);
       }
     }
   }
@@ -124,11 +125,10 @@
                     const std::vector<base::StringPiece>& keys,
                     int64_t value) {
     for (auto key : full_key_list) {
-      auto it = std::find(keys.begin(), keys.end(), key);
-      if (it == keys.end())
-        histogram_tester_->ExpectTotalCount(key, 0);
-      else
+      if (base::Contains(keys, key))
         histogram_tester_->ExpectUniqueSample(key, value, 1);
+      else
+        histogram_tester_->ExpectTotalCount(key, 0);
     }
   }
 
diff --git a/media/remoting/renderer_controller.cc b/media/remoting/renderer_controller.cc
index 375d967..5cd2df7 100644
--- a/media/remoting/renderer_controller.cc
+++ b/media/remoting/renderer_controller.cc
@@ -5,6 +5,7 @@
 #include "media/remoting/renderer_controller.h"
 
 #include "base/bind.h"
+#include "base/containers/contains.h"
 #include "base/logging.h"
 #include "base/time/default_tick_clock.h"
 #include "base/time/tick_clock.h"
@@ -616,23 +617,17 @@
 
 bool RendererController::HasVideoCapability(
     mojom::RemotingSinkVideoCapability capability) const {
-  return std::find(std::begin(sink_metadata_.video_capabilities),
-                   std::end(sink_metadata_.video_capabilities),
-                   capability) != std::end(sink_metadata_.video_capabilities);
+  return base::Contains(sink_metadata_.video_capabilities, capability);
 }
 
 bool RendererController::HasAudioCapability(
     mojom::RemotingSinkAudioCapability capability) const {
-  return std::find(std::begin(sink_metadata_.audio_capabilities),
-                   std::end(sink_metadata_.audio_capabilities),
-                   capability) != std::end(sink_metadata_.audio_capabilities);
+  return base::Contains(sink_metadata_.audio_capabilities, capability);
 }
 
 bool RendererController::HasFeatureCapability(
     RemotingSinkFeature capability) const {
-  return std::find(std::begin(sink_metadata_.features),
-                   std::end(sink_metadata_.features),
-                   capability) != std::end(sink_metadata_.features);
+  return base::Contains(sink_metadata_.features, capability);
 }
 
 bool RendererController::SinkSupportsRemoting() const {
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc
index 18fbfe1..40436e5 100644
--- a/media/video/gpu_memory_buffer_video_frame_pool.cc
+++ b/media/video/gpu_memory_buffer_video_frame_pool.cc
@@ -9,7 +9,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <algorithm>
 #include <list>
 #include <memory>
 #include <utility>
@@ -26,6 +25,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/ranges/algorithm.h"
 #include "base/strings/stringprintf.h"
 #include "base/sys_byteorder.h"
 #include "base/time/default_tick_clock.h"
@@ -1090,8 +1090,7 @@
     // Drop the resources if there was an error with them. If we're not in
     // shutdown we also need to remove the pool entry for them.
     if (!in_shutdown_) {
-      auto it = std::find(resources_pool_.begin(), resources_pool_.end(),
-                          frame_resources);
+      auto it = base::ranges::find(resources_pool_, frame_resources);
       DCHECK(it != resources_pool_.end());
       resources_pool_.erase(it);
     }
diff --git a/net/third_party/quiche/BUILD.gn b/net/third_party/quiche/BUILD.gn
index b0ff2d9..956a5e0 100644
--- a/net/third_party/quiche/BUILD.gn
+++ b/net/third_party/quiche/BUILD.gn
@@ -783,15 +783,14 @@
       "overrides/quiche_platform_impl/epoll_logging_impl.h",
       "overrides/quiche_platform_impl/epoll_thread_impl.h",
       "overrides/quiche_platform_impl/quiche_udp_socket_platform_impl.h",
-      "src/quiche/common/platform/api/quiche_stream_buffer_allocator.h",
       "src/quiche/common/platform/api/quiche_udp_socket_platform_api.h",
       "src/quiche/common/platform/default/quiche_platform_impl/quiche_stream_buffer_allocator_impl.h",
       "src/quiche/common/quiche_ip_address_family.cc",
       "src/quiche/common/quiche_ip_address_family.h",
+      "src/quiche/quic/core/io/event_loop_connecting_client_socket.cc",
+      "src/quiche/quic/core/io/event_loop_connecting_client_socket.h",
       "src/quiche/quic/core/io/event_loop_socket_factory.cc",
       "src/quiche/quic/core/io/event_loop_socket_factory.h",
-      "src/quiche/quic/core/io/event_loop_tcp_client_socket.cc",
-      "src/quiche/quic/core/io/event_loop_tcp_client_socket.h",
       "src/quiche/quic/core/io/quic_default_event_loop.cc",
       "src/quiche/quic/core/io/quic_default_event_loop.h",
       "src/quiche/quic/core/io/quic_poll_event_loop.cc",
diff --git a/sandbox/win/src/app_container.h b/sandbox/win/src/app_container.h
index 1486027..962afbbc 100644
--- a/sandbox/win/src/app_container.h
+++ b/sandbox/win/src/app_container.h
@@ -16,7 +16,7 @@
 
 enum AppContainerType { kNone, kDerived, kProfile, kLowbox };
 
-class AppContainer {
+class [[clang::lto_visibility_public]] AppContainer {
  public:
   // Increments the reference count of this object. The reference count must
   // be incremented if this interface is given to another component.
diff --git a/sandbox/win/src/crosscall_server.h b/sandbox/win/src/crosscall_server.h
index e0821af..075f9c8 100644
--- a/sandbox/win/src/crosscall_server.h
+++ b/sandbox/win/src/crosscall_server.h
@@ -137,7 +137,7 @@
 // 2) When the  IPC finally obtains a valid Dispatcher the IPC
 //    implementation creates a CrossCallParamsEx from the raw IPC buffer.
 // 3) It calls the returned callback, with the IPC info and arguments.
-class Dispatcher {
+class [[clang::lto_visibility_public]] Dispatcher {
  public:
   // Called from the  IPC implementation to handle a specific IPC message.
   typedef bool (Dispatcher::*CallbackGeneric)();
diff --git a/sandbox/win/src/resolver.h b/sandbox/win/src/resolver.h
index 1485d56..53a744ad 100644
--- a/sandbox/win/src/resolver.h
+++ b/sandbox/win/src/resolver.h
@@ -19,7 +19,7 @@
 // A resolver is the object in charge of performing the actual interception of
 // a function. There should be a concrete implementation of a resolver roughly
 // per type of interception.
-class ResolverThunk {
+class [[clang::lto_visibility_public]] ResolverThunk {
  public:
   ResolverThunk() {}
 
diff --git a/sandbox/win/src/service_resolver.h b/sandbox/win/src/service_resolver.h
index d1088223..d385810f 100644
--- a/sandbox/win/src/service_resolver.h
+++ b/sandbox/win/src/service_resolver.h
@@ -14,7 +14,8 @@
 
 // This is the concrete resolver used to perform service-call type functions
 // inside ntdll.dll.
-class ServiceResolverThunk : public ResolverThunk {
+class [[clang::lto_visibility_public]] ServiceResolverThunk
+    : public ResolverThunk {
  public:
   // The service resolver needs a child process to write to.
   ServiceResolverThunk(HANDLE process, bool relaxed)
diff --git a/services/network/udp_socket_unittest.cc b/services/network/udp_socket_unittest.cc
index 89b0bb3..0e52a54 100644
--- a/services/network/udp_socket_unittest.cc
+++ b/services/network/udp_socket_unittest.cc
@@ -673,18 +673,15 @@
   EXPECT_EQ(std::vector<uint8_t>(), result.data.value());
 }
 
-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC) || \
-    BUILDFLAG(IS_FUCHSIA)
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
 // Some Android devices do not support multicast socket.
 // The ones supporting multicast need WifiManager.MulticastLock to enable it.
 // https://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
-// TODO(crbug.com/1215667): Fails on iOS running on Mac 11 machines. Flaky on
-// Mac 11 machines.
 // TODO(crbug.com/1255191): Fails on Fuchsia running with run-test-component.
 #define MAYBE_JoinMulticastGroup DISABLED_JoinMulticastGroup
 #else
 #define MAYBE_JoinMulticastGroup JoinMulticastGroup
-#endif  // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC)
+#endif  // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FUCHSIA)
 TEST_F(UDPSocketTest, MAYBE_JoinMulticastGroup) {
   const char kGroup[] = "237.132.100.17";
 
diff --git a/services/viz/public/cpp/compositing/mojom_traits_unittest.cc b/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
index faace0b..9e4467c 100644
--- a/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
+++ b/services/viz/public/cpp/compositing/mojom_traits_unittest.cc
@@ -440,9 +440,9 @@
 }
 
 TEST_F(StructTraitsTest, SharedQuadState) {
-  const gfx::Transform quad_to_target_transform(1.f, 2.f, 3.f, 4.f, 5.f, 6.f,
-                                                7.f, 8.f, 9.f, 10.f, 11.f, 12.f,
-                                                13.f, 14.f, 15.f, 16.f);
+  const auto quad_to_target_transform =
+      gfx::Transform::RowMajor(1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f,
+                               10.f, 11.f, 12.f, 13.f, 14.f, 15.f, 16.f);
   const gfx::Rect layer_rect(1234, 5678);
   const gfx::Rect visible_layer_rect(12, 34, 56, 78);
   const gfx::MaskFilterInfo mask_filter_info(
@@ -482,9 +482,9 @@
                       gfx::Rect(2, 3), gfx::Transform());
 
   // SharedQuadState.
-  const gfx::Transform sqs_quad_to_target_transform(
-      1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f,
-      15.f, 16.f);
+  const auto sqs_quad_to_target_transform =
+      gfx::Transform::RowMajor(1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f,
+                               10.f, 11.f, 12.f, 13.f, 14.f, 15.f, 16.f);
   const gfx::Rect sqs_layer_rect(1234, 5678);
   const gfx::Rect sqs_visible_layer_rect(12, 34, 56, 78);
   const gfx::MaskFilterInfo sqs_mask_filter_info(
@@ -768,7 +768,7 @@
   const CompositorRenderPassId render_pass_id{3u};
   const gfx::Rect output_rect(45, 22, 120, 13);
   const gfx::Transform transform_to_root =
-      gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
+      gfx::Transform::Affine(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
   const gfx::Rect damage_rect(56, 123, 19, 43);
   cc::FilterOperations filters;
   filters.Append(cc::FilterOperation::CreateBlurFilter(0.f));
@@ -798,16 +798,18 @@
 
   SharedQuadState* shared_state_1 = input->CreateAndAppendSharedQuadState();
   shared_state_1->SetAll(
-      gfx::Transform(16.1f, 15.3f, 14.3f, 13.7f, 12.2f, 11.4f, 10.4f, 9.8f,
-                     8.1f, 7.3f, 6.3f, 5.7f, 4.8f, 3.4f, 2.4f, 1.2f),
+      gfx::Transform::RowMajor(16.1f, 15.3f, 14.3f, 13.7f, 12.2f, 11.4f, 10.4f,
+                               9.8f, 8.1f, 7.3f, 6.3f, 5.7f, 4.8f, 3.4f, 2.4f,
+                               1.2f),
       gfx::Rect(1, 2), gfx::Rect(1337, 5679, 9101112, 131415),
       gfx::MaskFilterInfo(gfx::RRectF(gfx::RectF(5.f, 6.f, 70.f, 89.f), 10.f)),
       gfx::Rect(1357, 2468, 121314, 1337), true, 2, SkBlendMode::kSrcOver, 1);
 
   SharedQuadState* shared_state_2 = input->CreateAndAppendSharedQuadState();
   shared_state_2->SetAll(
-      gfx::Transform(1.1f, 2.3f, 3.3f, 4.7f, 5.2f, 6.4f, 7.4f, 8.8f, 9.1f,
-                     10.3f, 11.3f, 12.7f, 13.8f, 14.4f, 15.4f, 16.2f),
+      gfx::Transform::RowMajor(1.1f, 2.3f, 3.3f, 4.7f, 5.2f, 6.4f, 7.4f, 8.8f,
+                               9.1f, 10.3f, 11.3f, 12.7f, 13.8f, 14.4f, 15.4f,
+                               16.2f),
       gfx::Rect(1337, 1234), gfx::Rect(1234, 5678, 9101112, 13141516),
       gfx::MaskFilterInfo(gfx::RRectF(gfx::RectF(23.f, 45.f, 60.f, 70.f), 8.f)),
       gfx::Rect(1357, 2468, 121314, 1337), true, 2, SkBlendMode::kSrcOver, 1);
@@ -924,7 +926,7 @@
   const gfx::Rect output_rect(45, 22, 120, 13);
   const gfx::Rect damage_rect(56, 123, 19, 43);
   const gfx::Transform transform_to_root =
-      gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
+      gfx::Transform::Affine(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
   const absl::optional<gfx::RRectF> backdrop_filter_bounds;
   SubtreeCaptureId subtree_capture_id;
   const bool has_transparent_background = true;
diff --git a/services/viz/public/cpp/hit_test/mojom_traits_unittest.cc b/services/viz/public/cpp/hit_test/mojom_traits_unittest.cc
index f8fd7f4..d71ee7a 100644
--- a/services/viz/public/cpp/hit_test/mojom_traits_unittest.cc
+++ b/services/viz/public/cpp/hit_test/mojom_traits_unittest.cc
@@ -73,7 +73,8 @@
 // Ensures gfx::Transform doesn't mutate itself when its const methods are
 // called, to ensure it won't change in the read-only shared memory segment.
 TEST(StructTraitsTest, TransformImmutable) {
-  gfx::Transform t1(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
+  auto t1 = gfx::Transform::RowMajor(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+                                     14, 15, 16);
   gfx::Transform t2;
   std::memcpy(&t2, &t1, sizeof(t1));
   EXPECT_FALSE(t2.IsIdentity());
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index 653be00b..f429d7a8 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -6539,871 +6539,6 @@
       }
     ]
   },
-  "android-weblayer-11-x86-rel-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_instrumentation_test_apk ToT_Tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_instrumentation_test_apk ToT_Tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "weblayer_instrumentation_test_apk",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_instrumentation_test_apk/",
-        "variant_id": "ToT_Tests"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--client-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--client-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--client-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_105"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--impl-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--impl-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--impl-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android30.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android30",
-              "path": ".android_emulator/generic_android30"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android30"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_105"
-      }
-    ]
-  },
   "android-weblayer-pie-x86-wpt-fyi-rel": {
     "isolated_scripts": [
       {
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 3fc9462..915ccc4b3c 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -49290,3405 +49290,6 @@
       }
     ]
   },
-  "android-weblayer-10-x86-rel-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_instrumentation_test_apk ToT_Tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_instrumentation_test_apk ToT_Tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "weblayer_instrumentation_test_apk",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_instrumentation_test_apk/",
-        "variant_id": "ToT_Tests"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--client-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--client-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--client-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_105"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--impl-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--impl-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--impl-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android29.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android29",
-              "path": ".android_emulator/generic_android29"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android29"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_105"
-      }
-    ]
-  },
-  "android-weblayer-marshmallow-x86-rel-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--client-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_client_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_client_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_client_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--client-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_client_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_client_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_client_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--client-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_client_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_client_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_client_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_client_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_client_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_client_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_client_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_client_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_client_from_105"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--impl-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_impl_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_impl_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_impl_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--impl-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_impl_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_impl_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_impl_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--impl-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_impl_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_impl_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_impl_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_impl_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_impl_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_impl_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/ChromePublic.apk",
-          "--webview-apk-path=apks/AOSP_SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests_with_chrome with_impl_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests_with_chrome with_impl_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests_with_chrome",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome/",
-        "variant_id": "with_impl_from_105"
-      }
-    ]
-  },
-  "android-weblayer-oreo-x86-rel-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_instrumentation_test_apk ToT_Tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_instrumentation_test_apk ToT_Tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "weblayer_instrumentation_test_apk",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_instrumentation_test_apk/",
-        "variant_id": "ToT_Tests"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--client-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--client-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--client-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_105"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--impl-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--impl-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--impl-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android27.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android27",
-              "path": ".android_emulator/generic_android27"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android27"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_105"
-      }
-    ]
-  },
-  "android-weblayer-pie-x86-rel-tests": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_instrumentation_test_apk ToT_Tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_instrumentation_test_apk ToT_Tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "weblayer_instrumentation_test_apk",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_instrumentation_test_apk/",
-        "variant_id": "ToT_Tests"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--client-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--client-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--client-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--implementation-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--client-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_client_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_client_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_client_from_105"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M100/out/Release",
-          "--impl-version=100",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_100"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_100",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M100",
-              "revision": "version:100.0.4896.134"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_100"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M101/out/Release",
-          "--impl-version=101",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_101"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_101",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M101",
-              "revision": "version:101.0.4951.74"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_101"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M102/out/Release",
-          "--impl-version=102",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_102"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_102",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M102",
-              "revision": "version:102.0.5005.125"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_102"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M104/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=104",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_104"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_104",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M104",
-              "revision": "version:104.0.5112.59"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_104"
-      },
-      {
-        "args": [
-          "--additional-apk=apks/WebLayerShellSystemWebView.apk",
-          "--webview-apk-path=apks/SystemWebView.apk",
-          "--test-runner-outdir",
-          ".",
-          "--client-outdir",
-          ".",
-          "--implementation-outdir",
-          "../../weblayer_instrumentation_test_M105/out/Release",
-          "--test-expectations",
-          "../../weblayer/browser/android/javatests/skew/expectations.txt",
-          "--impl-version=105",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android28.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "weblayer_skew_tests with_impl_from_105"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "weblayer_skew_tests with_impl_from_105",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "cipd_packages": [
-            {
-              "cipd_package": "chromium/testing/weblayer-x86",
-              "location": "weblayer_instrumentation_test_M105",
-              "revision": "version:105.0.5195.145"
-            }
-          ],
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android28",
-              "path": ".android_emulator/generic_android28"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android28"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "weblayer_skew_tests",
-        "test_id_prefix": "ninja://weblayer/browser/android/javatests:weblayer_skew_tests/",
-        "variant_id": "with_impl_from_105"
-      }
-    ]
-  },
   "android-webview-10-x86-rel-tests": {
     "gtest_tests": [
       {
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index 7fb5918..dc918abd 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -1385,10 +1385,6 @@
     "label": "//chrome/notification_helper:notification_helper_unittests",
     "type": "windowed_test_launcher",
   },
-  "opus_tests": {
-    "label": "//third_party/opus:opus_tests",
-    "type": "console_test_launcher",
-  },
   "openscreen_unittests": {
     "label": "//chrome/browser/media/router:openscreen_unittests",
     "type": "console_test_launcher",
@@ -2128,17 +2124,6 @@
     "label": "//weblayer/browser/android/javatests:weblayer_instrumentation_test_apk",
     "type": "console_test_launcher",
   },
-  "weblayer_skew_tests": {
-    "label": "//weblayer/browser/android/javatests:weblayer_skew_tests",
-    "type": "console_test_launcher",
-  },
-  "weblayer_skew_tests_with_chrome": {
-    "args":  [
-      "--replace-system-package=apks/WebLayerShellSystemWebView.apk"
-    ],
-    "label": "//weblayer/browser/android/javatests:weblayer_skew_tests_with_chrome",
-    "type": "console_test_launcher",
-  },
   "weblayer_junit_tests": {
     "label": "//weblayer/browser/java:weblayer_junit_tests",
     "type": "junit_test",
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index b080789..6273499 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -4251,15 +4251,6 @@
       },
     },
 
-    'opus_tests': {
-      'opus_tests': {
-        'args': [
-          '--shard-timeout=3000'
-        ],
-        'test': 'opus_tests',
-       },
-     },
-
     # TODO(petermcneeley) : Remove once OverlayPrioritization has landed on
     # all ozone platforms.
     'overlay_prioritization_gtests': {
@@ -4873,7 +4864,6 @@
       },
     },
 
-
     'weblayer_gtests': {
       'weblayer_browsertests': {
       },
@@ -4881,11 +4871,6 @@
       },
     },
 
-    'weblayer_instrumentation_tests': {
-      'weblayer_instrumentation_test_apk': {
-      }
-    },
-
     'weblayer_shell_wpt': {
       'weblayer_shell_wpt': {
         'args': [
@@ -4907,28 +4892,6 @@
       },
     },
 
-    'weblayer_skew_tests': {
-      'weblayer_skew_tests': {
-        'swarming': {
-          'shards': 2,
-        },
-        'args': [
-          '--additional-apk=apks/WebLayerShellSystemWebView.apk',
-        ],
-      },
-    },
-
-    'weblayer_skew_tests_with_chrome': {
-      'weblayer_skew_tests_with_chrome': {
-        'swarming': {
-          'shards': 2,
-        },
-        'args': [
-          '--additional-apk=apks/ChromePublic.apk'
-        ],
-      },
-    },
-
     'webrtc_chromium_baremetal_gtests': {
       'browser_tests': {
         'args': [
@@ -6399,68 +6362,6 @@
       'webview_ui_instrumentation_tests': {},
     },
 
-
-    'android_weblayer_x86_10_gtests': {
-      'weblayer_instrumentation_tests': {
-        'variants': [
-          {'identifier': 'ToT_Tests'}
-        ]
-      },
-      'weblayer_skew_tests': {
-        'variants': [
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MILESTONE',
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE',
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE',
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE',
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE',
-        ]
-      }
-    },
-
-    'android_weblayer_x86_marshmallow_gtests': {
-      'weblayer_skew_tests_with_chrome': {
-        'variants': [
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MILESTONE',
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE',
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE',
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE',
-          'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE',
-        ]
-      }
-    },
-
-    'android_weblayer_x86_pie_oreo_gtests': {
-      'weblayer_instrumentation_tests': {
-        'variants': [
-          {'identifier': 'ToT_Tests'}
-        ]
-      },
-      'weblayer_skew_tests': {
-        'variants': [
-          'WEBLAYER_IMPL_SKEW_TESTS_NTH_MILESTONE',
-          'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE',
-          'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE',
-          'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE',
-          'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE',
-          'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE',
-        ]
-      }
-    },
-
     'chromeos_trogdor64_skylab_tests': {
       'chromeos_chrome_all_tast_tests': {
         'variants': [
diff --git a/testing/buildbot/tryserver.chromium.android.json b/testing/buildbot/tryserver.chromium.android.json
index e8d3883..4a86d30d 100644
--- a/testing/buildbot/tryserver.chromium.android.json
+++ b/testing/buildbot/tryserver.chromium.android.json
@@ -1,51 +1,6 @@
 {
   "AAAAA1 AUTOGENERATED FILE DO NOT EDIT": {},
   "AAAAA2 See generate_buildbot_json.py to make changes": {},
-  "android-opus-arm-rel": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--shard-timeout=3000",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "opus_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "opus_tests",
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "opus_tests",
-        "test_id_prefix": "ninja://third_party/opus:opus_tests/"
-      }
-    ]
-  },
   "android_blink_rel": {
     "gtest_tests": [
       {
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl
index fc119f194..577550b 100644
--- a/testing/buildbot/variants.pyl
+++ b/testing/buildbot/variants.pyl
@@ -535,366 +535,6 @@
       '--test-apk-as-instant',
     ],
   },
-  'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MILESTONE': {
-    'args': [
-      '--webview-apk-path=apks/AOSP_SystemWebView.apk',
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M104/out/Release',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--impl-version=104',
-    ],
-    'identifier': 'with_impl_from_104',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M104',
-          'revision': 'version:104.0.5112.59',
-        }
-      ],
-    },
-  },
-  'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': {
-    'args': [
-      '--webview-apk-path=apks/AOSP_SystemWebView.apk',
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M105/out/Release',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--impl-version=105',
-    ],
-    'identifier': 'with_impl_from_105',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M105',
-          'revision': 'version:105.0.5195.145',
-        }
-      ],
-    },
-  },
-  'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/AOSP_SystemWebView.apk',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M102/out/Release',
-      '--impl-version=102'
-    ],
-    'identifier': 'with_impl_from_102',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M102',
-          'revision': 'version:102.0.5005.125'
-        }
-      ]
-    }
-  },
-  'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/AOSP_SystemWebView.apk',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M101/out/Release',
-      '--impl-version=101'
-    ],
-    'identifier': 'with_impl_from_101',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M101',
-          'revision': 'version:101.0.4951.74'
-        }
-      ]
-    }
-  },
-  'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/AOSP_SystemWebView.apk',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M100/out/Release',
-      '--impl-version=100'
-    ],
-    'identifier': 'with_impl_from_100',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M100',
-          'revision': 'version:100.0.4896.134'
-        }
-      ]
-    }
-  },
-  'WEBLAYER_IMPL_SKEW_TESTS_NTH_MILESTONE': {
-    'args': [
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M104/out/Release',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--impl-version=104',
-    ],
-    'identifier': 'with_impl_from_104',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M104',
-          'revision': 'version:104.0.5112.59',
-        }
-      ],
-    },
-  },
-  'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': {
-    'args': [
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M105/out/Release',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--impl-version=105',
-    ],
-    'identifier': 'with_impl_from_105',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M105',
-          'revision': 'version:105.0.5195.145',
-        }
-      ],
-    },
-  },
-  'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M102/out/Release',
-      '--impl-version=102'
-    ],
-    'identifier': 'with_impl_from_102',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M102',
-          'revision': 'version:102.0.5005.125'
-        }
-      ]
-    }
-  },
-  'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M101/out/Release',
-      '--impl-version=101'
-    ],
-    'identifier': 'with_impl_from_101',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M101',
-          'revision': 'version:101.0.4951.74'
-        }
-      ]
-    }
-  },
-  'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--implementation-outdir',
-      '../../weblayer_instrumentation_test_M100/out/Release',
-      '--impl-version=100'
-    ],
-    'identifier': 'with_impl_from_100',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M100',
-          'revision': 'version:100.0.4896.134'
-        }
-      ]
-    }
-  },
-  'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MILESTONE': {
-    'args': [
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '../../weblayer_instrumentation_test_M104/out/Release',
-      '--implementation-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--client-version=104',
-    ],
-    'identifier': 'with_client_from_104',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M104',
-          'revision': 'version:104.0.5112.59',
-        }
-      ],
-    },
-  },
-  'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': {
-    'args': [
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--test-runner-outdir',
-      '.',
-      '--client-outdir',
-      '../../weblayer_instrumentation_test_M105/out/Release',
-      '--implementation-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--client-version=105',
-    ],
-    'identifier': 'with_client_from_105',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M105',
-          'revision': 'version:105.0.5195.145',
-        }
-      ],
-    },
-  },
-  'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--implementation-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--client-outdir',
-      '../../weblayer_instrumentation_test_M102/out/Release',
-      '--client-version=102'
-    ],
-    'identifier': 'with_client_from_102',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M102',
-          'revision': 'version:102.0.5005.125'
-        }
-      ]
-    }
-  },
-  'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_THREE_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--implementation-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--client-outdir',
-      '../../weblayer_instrumentation_test_M101/out/Release',
-      '--client-version=101'
-    ],
-    'identifier': 'with_client_from_101',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M101',
-          'revision': 'version:101.0.4951.74'
-        }
-      ]
-    }
-  },
-  'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_FOUR_MILESTONE': {
-    'args': [
-      '--test-runner-outdir',
-      '.',
-      '--implementation-outdir',
-      '.',
-      '--test-expectations',
-      '../../weblayer/browser/android/javatests/skew/expectations.txt',
-      '--webview-apk-path=apks/SystemWebView.apk',
-      '--client-outdir',
-      '../../weblayer_instrumentation_test_M100/out/Release',
-      '--client-version=100'
-    ],
-    'identifier': 'with_client_from_100',
-    'swarming': {
-      'cipd_packages': [
-        {
-          'cipd_package': 'chromium/testing/weblayer-x86',
-          'location': 'weblayer_instrumentation_test_M100',
-          'revision': 'version:100.0.4896.134'
-        }
-      ]
-    }
-  },
   'CROS_ATLAS_RELEASE_LKGM': {
     'skylab': {
       'cros_board': 'atlas',
@@ -1245,4 +885,4 @@
       'win10_nvidia_gtx_1660_stable',
     ],
   },
-}
\ No newline at end of file
+}
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 4e29f38e..740c8412 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -1113,58 +1113,6 @@
           'scripts': 'chromium_android_scripts',
         }
       },
-      'android-weblayer-10-x86-rel-tests': {
-        'mixins': [
-          'has_native_resultdb_integration',
-          '10-x86-emulator',
-          'emulator-4-cores',
-          'linux-bionic',
-          'x86-64',
-        ],
-        'os_type': 'android',
-        'test_suites': {
-          'gtest_tests': 'android_weblayer_x86_10_gtests',
-        }
-      },
-      'android-weblayer-marshmallow-x86-rel-tests': {
-        'mixins': [
-          'has_native_resultdb_integration',
-          'marshmallow-x86-emulator',
-          'emulator-4-cores',
-          'linux-bionic',
-          'x86-64',
-        ],
-        'os_type': 'android',
-        'test_suites': {
-          'gtest_tests': 'android_weblayer_x86_marshmallow_gtests',
-        }
-      },
-      'android-weblayer-oreo-x86-rel-tests': {
-        'mixins': [
-          'has_native_resultdb_integration',
-          'oreo-x86-emulator',
-          'emulator-4-cores',
-          'linux-bionic',
-          'x86-64',
-        ],
-        'os_type': 'android',
-        'test_suites': {
-          'gtest_tests': 'android_weblayer_x86_pie_oreo_gtests',
-        }
-      },
-      'android-weblayer-pie-x86-rel-tests': {
-        'mixins': [
-          'has_native_resultdb_integration',
-          'pie-x86-emulator',
-          'emulator-4-cores',
-          'linux-bionic',
-          'x86-64',
-        ],
-        'os_type': 'android',
-        'test_suites': {
-          'gtest_tests': 'android_weblayer_x86_pie_oreo_gtests',
-        }
-      },
       'android-webview-10-x86-rel-tests': {
         'mixins': [
           'has_native_resultdb_integration',
@@ -1303,19 +1251,6 @@
           'scripts': 'chromium_android_scripts',
         }
       },
-      'android-weblayer-11-x86-rel-tests': {
-        'mixins': [
-          'has_native_resultdb_integration',
-          '11-x86-emulator',
-          'emulator-4-cores',
-          'linux-bionic',
-          'x86-64',
-        ],
-        'os_type': 'android',
-        'test_suites': {
-          'gtest_tests': 'android_weblayer_x86_10_gtests',
-        }
-      },
       'android-weblayer-pie-x86-wpt-fyi-rel': {
         'mixins': [
           'has_native_resultdb_integration',
@@ -6995,16 +6930,6 @@
     'name': 'tryserver.chromium.android',
     'mixins': ['chromium-tester-service-account'],
     'machines': {
-      'android-opus-arm-rel': {
-        'mixins': [
-          'marshmallow',
-          'bullhead',
-        ],
-        'test_suites': {
-          'gtest_tests': 'opus_tests',
-        },
-        'os_type': 'android',
-      },
       'android_blink_rel': {
         'mixins': [
           'marshmallow',
diff --git a/testing/scripts/run_finch_smoke_tests_android.py b/testing/scripts/run_finch_smoke_tests_android.py
index a76d2e0..a796616c 100755
--- a/testing/scripts/run_finch_smoke_tests_android.py
+++ b/testing/scripts/run_finch_smoke_tests_android.py
@@ -103,10 +103,9 @@
                              test_results_dict.setdefault(key, {}))
 
 
-# pylint: disable=super-with-arguments
+# pylint: disable=super-with-arguments, abstract-method
 class FinchTestCase(wpt_common.BaseWptScriptAdapter):
 
-
   def __init__(self, device):
     super(FinchTestCase, self).__init__()
     self._device = device
@@ -204,6 +203,9 @@
     super(FinchTestCase, self).parse_args(args)
     if (not self.options.finch_seed_path or
         not os.path.exists(self.options.finch_seed_path)):
+      logger.warning('Could not find the finch seed passed '
+                     'as the argument for --finch-seed-path. '
+                     'Running tests on the default finch seed')
       self.options.finch_seed_path = self.default_finch_seed_path
 
   def __enter__(self):
@@ -397,7 +399,7 @@
             self.test_specific_browser_args)
 
   def run_tests(self, test_run_variation, all_test_results_dict,
-                extra_browser_args=None):
+                extra_browser_args=None, check_seed_loaded=False):
     """Run browser test on test device
 
     Args:
@@ -405,9 +407,10 @@
       all_test_results_dict: Main results dictionary containing
         results for all test variations.
       extra_browser_args: Extra browser arguments.
+      check_seed_loaded: Check if the finch seed was loaded.
 
     Returns:
-      True if browser did not crash or False if the browser crashed.
+      The return code of all tests.
     """
     isolate_root_dir = os.path.dirname(
         self.options.isolated_script_test_output)
@@ -438,21 +441,29 @@
     shutil.move(os.path.join(isolate_root_dir, logcat_filename),
                 final_logcat_path)
 
+    seed_loaded_result_dict = {'num_failures_by_type': {}, 'tests': {}}
+    if check_seed_loaded:
+      # Check in the logcat if the seed was loaded
+      ret |= self._finch_seed_loaded(final_logcat_path, seed_loaded_result_dict)
+
     with open(self.wpt_output, 'r') as test_harness_results:
       test_harness_results_dict = json.load(test_harness_results)
-      all_test_results_dict['tests'][test_run_variation] = (
-          test_harness_results_dict['tests'])
-      _merge_results_dicts(pixel_tests_results_dict['tests'],
-                           all_test_results_dict['tests'][test_run_variation])
-
       for test_results_dict in (test_harness_results_dict,
-                                pixel_tests_results_dict):
+                                pixel_tests_results_dict,
+                                seed_loaded_result_dict):
+        _merge_results_dicts(
+            test_results_dict['tests'],
+            all_test_results_dict['tests'].setdefault(test_run_variation, {}))
+
         for result, count in test_results_dict['num_failures_by_type'].items():
           all_test_results_dict['num_failures_by_type'].setdefault(result, 0)
           all_test_results_dict['num_failures_by_type'][result] += count
 
     return ret
 
+  def _finch_seed_loaded(self, logcat_path, all_results_dict):
+    raise NotImplementedError
+
   def _run_pixel_tests(self):
     """Run pixel tests on device
 
@@ -644,6 +655,68 @@
         'external/wpt/svg/pservers/reftests/radialgradient-basic-002.svg',
     ]
 
+  def _finch_seed_loaded(self, logcat_path, all_results_dict):
+    """Checks the logcat if the seed was loaded
+
+    Args:
+      logcat_path: Path to the logcat.
+      all_results_dict: Dictionary containing test results
+
+    Returns:
+      0 if the seed was loaded and experiments were loaded for finch seeds
+      other than the default seed. Otherwise it returns 1.
+    """
+    with open(logcat_path, 'r') as logcat:
+      logcat_content = logcat.read()
+
+    seed_loaded = 'cr_VariationsUtils: Loaded seed with age' in logcat_content
+    logcat_relpath = os.path.relpath(logcat_path,
+                                     os.path.dirname(self.wpt_output))
+    seed_loaded_results_dict = (
+        all_results_dict['tests'].setdefault(
+            'check_seed_loaded',
+            {'expected': 'PASS',
+             'artifacts': {'logcat_path': [logcat_relpath]}}))
+
+    if seed_loaded:
+      logger.info('The finch seed was loaded by WebView')
+      seed_loaded_results_dict['actual'] = 'PASS'
+    else:
+      logger.error('The finch seed was not loaded by WebView')
+      seed_loaded_results_dict['actual'] = 'FAIL'
+      all_results_dict['num_failures_by_type']['FAIL'] = 1
+
+    # If the value for the --finch-seed-path argument does not exist, then
+    # a default seed is consumed. The default seed may be too old to have it's
+    # experiments loaded.
+    if self.default_finch_seed_path != self.options.finch_seed_path:
+      # Check for a field trial that is guaranteed to be activated by
+      # the finch seed.
+      experiments_loaded = ('Active field trial '
+                            '"UMA-Uniformity-Trial-100-Percent" '
+                            'in group "group_01"') in logcat_content
+      field_trials_loaded_results_dict = (
+          all_results_dict['tests'].setdefault(
+              'check_field_trials_loaded',
+              {'expected': 'PASS',
+               'artifacts': {'logcat_path': [logcat_relpath]}}))
+
+      if experiments_loaded:
+        logger.info('Experiments were loaded from the finch seed by WebView')
+        field_trials_loaded_results_dict['actual'] = 'PASS'
+      else:
+        logger.error('Experiments were not loaded from '
+                     'the finch seed by WebView')
+        field_trials_loaded_results_dict['actual'] = 'FAIL'
+        all_results_dict['num_failures_by_type'].setdefault('FAIL', 0)
+        all_results_dict['num_failures_by_type']['FAIL'] += 1
+
+      return 0 if seed_loaded and experiments_loaded else 1
+
+    logger.warning('The default seed is being tested, '
+                   'skipping checks for active field trials')
+    return 0 if seed_loaded else 1
+
   @classmethod
   def finch_seed_download_args(cls):
     return [
@@ -864,7 +937,7 @@
     # their adb binary.
     platform_tools_path = os.path.dirname(devil_env.config.FetchPath('adb'))
     os.environ['PATH'] = os.pathsep.join([platform_tools_path] +
-                                          os.environ['PATH'].split(os.pathsep))
+                                         os.environ['PATH'].split(os.pathsep))
 
     test_results_dict = OrderedDict({'version': 3, 'interrupted': False,
                                      'num_failures_by_type': {}, 'tests': {}})
@@ -872,18 +945,26 @@
     if test_case.product_name() == 'webview':
       ret = test_case.run_tests('without_finch_seed', test_results_dict)
       test_case.install_seed()
-      ret |= test_case.run_tests('with_finch_seed', test_results_dict)
-      # WebView needs several restarts to fetch and load a new finch seed
-      # TODO(b/187185389): Figure out why the first restart is needed
-      ret |= test_case.run_tests('extra_restart', test_results_dict,
-                                 test_case.finch_seed_download_args())
+      ret |= test_case.run_tests('with_finch_seed', test_results_dict,
+                                 check_seed_loaded=True)
+      # TODO(b/187185389): Figure out why WebView needs an extra restart
+      # to fetch and load a new finch seed. Also we should not check if
+      # the seed is loaded during the extra restart tests since the seed
+      # may not always be loaded after the restart.
+      ret |= test_case.run_tests(
+          'extra_restart', test_results_dict,
+          extra_browser_args=test_case.finch_seed_download_args())
       # Restart webview+shell to fetch new seed to variations_seed_new
-      ret |= test_case.run_tests('fetch_new_seed_restart', test_results_dict,
-                                 test_case.finch_seed_download_args())
+      ret |= test_case.run_tests(
+          'fetch_new_seed_restart', test_results_dict,
+          extra_browser_args=test_case.finch_seed_download_args(),
+          check_seed_loaded=True)
       # Restart webview+shell to copy from
       # variations_seed_new to variations_seed
-      ret |= test_case.run_tests('load_new_seed_restart', test_results_dict,
-                                 test_case.finch_seed_download_args())
+      ret |= test_case.run_tests(
+          'load_new_seed_restart', test_results_dict,
+          extra_browser_args=test_case.finch_seed_download_args(),
+          check_seed_loaded=True)
     else:
       test_case.install_seed()
       ret = test_case.run_tests('with_finch_seed', test_results_dict)
diff --git a/testing/scripts/wpt_common.py b/testing/scripts/wpt_common.py
index a2e7ed0..3f00d97 100644
--- a/testing/scripts/wpt_common.py
+++ b/testing/scripts/wpt_common.py
@@ -302,6 +302,7 @@
             '--no-capture-stdio',
             '--no-manifest-download',
             '--tests=%s' % self.wpt_root_dir,
+            '--metadata=%s' % self.wpt_root_dir,
             '--mojojs-path=%s' % self.mojo_js_directory,
         ])
 
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 5934a07d..960a216 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2807,7 +2807,7 @@
             ],
             "experiments": [
                 {
-                    "name": "Enabled_20220922",
+                    "name": "Enabled_20220926",
                     "params": {
                         "default-parser-budget": "10ms",
                         "long-parser-budget": "50ms",
@@ -2835,7 +2835,7 @@
             ],
             "experiments": [
                 {
-                    "name": "Enabled_20220922",
+                    "name": "Enabled_20220926",
                     "params": {
                         "default-parser-budget": "10ms",
                         "long-parser-budget": "500ms",
@@ -2852,6 +2852,9 @@
                         "OptimizeDataUrls",
                         "PrewarmDefaultFontFamilies",
                         "TimedHTMLParserBudget"
+                    ],
+                    "disable_features": [
+                        "EstablishGpuChannelAsync"
                     ]
                 }
             ]
@@ -2862,18 +2865,16 @@
             ],
             "experiments": [
                 {
-                    "name": "Enabled_20220922",
+                    "name": "Enabled_20220929",
                     "params": {
                         "default-parser-budget": "10ms",
                         "long-parser-budget": "50ms",
-                        "max_input_stream_bytes_available_unknown": "2048",
                         "num-yields-with-default-budget": "2"
                     },
                     "enable_features": [
                         "DecodeScriptSourceOffThread",
                         "EstablishGpuChannelAsync",
                         "OptimizeDataUrls",
-                        "OptimizeNetworkBuffers2",
                         "PrefetchFontLookupTables",
                         "TimedHTMLParserBudget"
                     ]
@@ -7373,6 +7374,24 @@
             ]
         }
     ],
+    "OptimizeNetworkBuffers": [
+        {
+            "platforms": [
+                "android_webview"
+            ],
+            "experiments": [
+                {
+                    "name": "2KB_input_stream_20220929",
+                    "params": {
+                        "max_input_stream_bytes_available_unknown": "2048"
+                    },
+                    "enable_features": [
+                        "OptimizeNetworkBuffers2"
+                    ]
+                }
+            ]
+        }
+    ],
     "OptionalToolbarButton": [
         {
             "platforms": [
@@ -8039,6 +8058,24 @@
             ]
         }
     ],
+    "PrefetchUseContentRefactor": [
+        {
+            "platforms": [
+                "android"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "PrefetchUseContentRefactor"
+                    ],
+                    "disable_features": [
+                        "IsolatePrerenders"
+                    ]
+                }
+            ]
+        }
+    ],
     "PreloadCookies": [
         {
             "platforms": [
@@ -8233,33 +8270,6 @@
             ]
         }
     ],
-    "PrivacyPreservingPrefetchProxy": [
-        {
-            "platforms": [
-                "android"
-            ],
-            "experiments": [
-                {
-                    "name": "Prefetch_2_20220214",
-                    "params": {
-                        "dns_canary_url": "http://dns-tunnel-check.googlezip.net/connect",
-                        "do_no_state_prefetch": "false",
-                        "ineligible_decoy_request_probability": "1",
-                        "lite_mode_only": "false",
-                        "max_srp_prefetches": "5",
-                        "max_subresource_count_per_prerender": "0",
-                        "start_spare_renderer": "true",
-                        "tls_canary_url": "http://tls-tunnel-check.googlezip.net/connect",
-                        "use_speculation_rules": "true"
-                    },
-                    "enable_features": [
-                        "IsolatePrerenders",
-                        "IsolatePrerendersMustProbeOrigin"
-                    ]
-                }
-            ]
-        }
-    ],
     "PrivacySandboxV3": [
         {
             "platforms": [
diff --git a/third_party/android_deps/additional_readme_paths.json b/third_party/android_deps/additional_readme_paths.json
index cee53df..111815f 100644
--- a/third_party/android_deps/additional_readme_paths.json
+++ b/third_party/android_deps/additional_readme_paths.json
@@ -121,6 +121,7 @@
     "libs/org_ccil_cowan_tagsoup_tagsoup",
     "libs/org_checkerframework_checker_compat_qual",
     "libs/org_checkerframework_checker_qual",
+    "libs/org_checkerframework_checker_util",
     "libs/org_checkerframework_dataflow_errorprone",
     "libs/org_codehaus_mojo_animal_sniffer_annotations",
     "libs/org_eclipse_jgit_org_eclipse_jgit",
diff --git a/third_party/android_deps/build.gradle b/third_party/android_deps/build.gradle
index e463902..ff01b481 100644
--- a/third_party/android_deps/build.gradle
+++ b/third_party/android_deps/build.gradle
@@ -145,6 +145,7 @@
     // Used by downstream targets.
     compile "com.google.errorprone:error_prone_annotations:${errorproneVersion}"
     compile 'org.checkerframework:checker-compat-qual:2.5.3'
+    compile 'org.checkerframework:checker-util:3.22.1'
     compile 'org.codehaus.mojo:animal-sniffer-annotations:1.17'
 
     // Dedicated configuration to avoid using higher version number. The 9999 version is empty.
@@ -184,7 +185,7 @@
     androidTestCompile 'org.ccil.cowan.tagsoup:tagsoup:1.2.1'
 
     androidTestCompile "org.mockito:mockito-core:4.7.0"
-    //Depended on by downstream guava_java rewrite.
+    // Depended on by downstream guava_java rewrite.
     androidTestCompile "org.checkerframework:checker-qual:3.22.1"
 
     String robolectricVersion = '4.8.1'
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy b/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
index e486f19c7..e6692b26 100644
--- a/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
+++ b/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
@@ -170,6 +170,9 @@
         org_checkerframework_checker_qual: new PropertyOverride(
             licenseUrl: 'https://raw.githubusercontent.com/typetools/checker-framework/master/LICENSE.txt',
             licenseName: 'GPL v2 with the classpath exception'),
+        org_checkerframework_checker_util: new PropertyOverride(
+            licenseUrl: 'https://raw.githubusercontent.com/typetools/checker-framework/master/checker-util/LICENSE.txt',
+            licenseName: 'MIT'),
         org_checkerframework_dataflow_errorprone: new PropertyOverride(
             licenseUrl: 'https://raw.githubusercontent.com/typetools/checker-framework/master/LICENSE.txt',
             licenseName: 'GPL v2 with the classpath exception'),
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_util/3pp/3pp.pb b/third_party/android_deps/libs/org_checkerframework_checker_util/3pp/3pp.pb
new file mode 100644
index 0000000..d743b51b
--- /dev/null
+++ b/third_party/android_deps/libs/org_checkerframework_checker_util/3pp/3pp.pb
@@ -0,0 +1,16 @@
+# Copyright 2021 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+
+create {
+  source {
+    script { name: "fetch.py" }
+  }
+}
+
+upload {
+  pkg_prefix: "chromium/third_party/android_deps/libs"
+  universal: true
+}
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_util/3pp/fetch.py b/third_party/android_deps/libs/org_checkerframework_checker_util/3pp/fetch.py
new file mode 100755
index 0000000..ab65215
--- /dev/null
+++ b/third_party/android_deps/libs/org_checkerframework_checker_util/3pp/fetch.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+# Copyright 2021 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This is generated, do not edit. Update BuildConfigGenerator.groovy and
+# 3ppFetch.template instead.
+
+import argparse
+import json
+import os
+import re
+import urllib.request
+
+_REPO_URL = 'https://repo.maven.apache.org/maven2'
+_GROUP_NAME = 'org/checkerframework'
+_MODULE_NAME = 'checker-util'
+_FILE_EXT = 'jar'
+_OVERRIDE_LATEST = None
+_PATCH_VERSION = 'cr1'
+
+
+def do_latest():
+    if _OVERRIDE_LATEST is not None:
+        print(_OVERRIDE_LATEST + f'.{_PATCH_VERSION}')
+        return
+    maven_metadata_url = '{}/{}/{}/maven-metadata.xml'.format(
+        _REPO_URL, _GROUP_NAME, _MODULE_NAME)
+    metadata = urllib.request.urlopen(maven_metadata_url).read().decode(
+        'utf-8')
+    # Do not parse xml with the python included parser since it is susceptible
+    # to maliciously crafted xmls. Only use regular expression parsing to be
+    # safe. RE should be enough to handle what we need to extract.
+    match = re.search('<latest>([^<]+)</latest>', metadata)
+    if match:
+        latest = match.group(1)
+    else:
+        # if no latest info was found just hope the versions are sorted and the
+        # last one is the latest (as is commonly the case).
+        latest = re.findall('<version>([^<]+)</version>', metadata)[-1]
+    print(latest + f'.{_PATCH_VERSION}')
+
+
+def get_download_url(version):
+    # Remove the patch version when getting the download url
+    version_no_patch, patch = version.rsplit('.', 1)
+    if patch.startswith('cr'):
+        version = version_no_patch
+    file_url = '{0}/{1}/{2}/{3}/{2}-{3}.{4}'.format(_REPO_URL, _GROUP_NAME,
+                                                    _MODULE_NAME, version,
+                                                    _FILE_EXT)
+    file_name = file_url.rsplit('/', 1)[-1]
+
+    partial_manifest = {
+        'url': [file_url],
+        'name': [file_name],
+        'ext': '.' + _FILE_EXT,
+    }
+    print(json.dumps(partial_manifest))
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    sub = ap.add_subparsers()
+
+    latest = sub.add_parser('latest')
+    latest.set_defaults(func=lambda _opts: do_latest())
+
+    download = sub.add_parser('get_url')
+    download.set_defaults(
+        func=lambda _opts: get_download_url(os.environ['_3PP_VERSION']))
+
+    opts = ap.parse_args()
+    opts.func(opts)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_util/LICENSE b/third_party/android_deps/libs/org_checkerframework_checker_util/LICENSE
new file mode 100644
index 0000000..47fa7199
--- /dev/null
+++ b/third_party/android_deps/libs/org_checkerframework_checker_util/LICENSE
@@ -0,0 +1,22 @@
+Checker Framework utilities
+Copyright 2004-present by the Checker Framework developers
+
+MIT License:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_util/OWNERS b/third_party/android_deps/libs/org_checkerframework_checker_util/OWNERS
new file mode 100644
index 0000000..aea47a05
--- /dev/null
+++ b/third_party/android_deps/libs/org_checkerframework_checker_util/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_util/README.chromium b/third_party/android_deps/libs/org_checkerframework_checker_util/README.chromium
new file mode 100644
index 0000000..4246ebdd
--- /dev/null
+++ b/third_party/android_deps/libs/org_checkerframework_checker_util/README.chromium
@@ -0,0 +1,14 @@
+Name: Checker Util
+Short Name: checker-util
+URL: https://checkerframework.org
+Version: 3.22.1
+License: MIT
+License File: LICENSE
+CPEPrefix: unknown
+Security Critical: yes
+
+Description:
+checker-util contains utility classes for programmers to use at run time.
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_util/cipd.yaml b/third_party/android_deps/libs/org_checkerframework_checker_util/cipd.yaml
new file mode 100644
index 0000000..9fef30b
--- /dev/null
+++ b/third_party/android_deps/libs/org_checkerframework_checker_util/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:2@3.22.1.cr1
+package: chromium/third_party/android_deps/libs/org_checkerframework_checker_util
+description: "Checker Util"
+data:
+- file: checker-util-3.22.1.jar
diff --git a/third_party/blink/renderer/core/animation/css/css_animation_update.h b/third_party/blink/renderer/core/animation/css/css_animation_update.h
index 4abc9c1c..d50dbfb0 100644
--- a/third_party/blink/renderer/core/animation/css/css_animation_update.h
+++ b/third_party/blink/renderer/core/animation/css/css_animation_update.h
@@ -76,10 +76,10 @@
                       StyleRuleKeyframes* style_rule,
                       AnimationTimeline* timeline,
                       const Vector<EAnimPlayState>& play_state_list)
-      : index(index),
+      : specified_timing(specified_timing),
+        index(index),
         animation(animation),
         effect(&effect),
-        specified_timing(specified_timing),
         style_rule(style_rule),
         style_rule_version(this->style_rule->Version()),
         timeline(timeline),
@@ -92,10 +92,10 @@
     visitor->Trace(timeline);
   }
 
+  Timing specified_timing;
   wtf_size_t index;
   Member<Animation> animation;
   Member<const InertEffect> effect;
-  Timing specified_timing;
   Member<StyleRuleKeyframes> style_rule;
   unsigned style_rule_version;
   Member<AnimationTimeline> timeline;
diff --git a/third_party/blink/renderer/core/animation/css/css_animations.h b/third_party/blink/renderer/core/animation/css/css_animations.h
index 56dc5c94..e9a4d8f 100644
--- a/third_party/blink/renderer/core/animation/css/css_animations.h
+++ b/third_party/blink/renderer/core/animation/css/css_animations.h
@@ -356,8 +356,8 @@
     TransitionEventDelegate(Element* transition_target,
                             const PropertyHandle& property,
                             Timing::Phase previous_phase = Timing::kPhaseNone)
-        : transition_target_(transition_target),
-          property_(property),
+        : property_(property),
+          transition_target_(transition_target),
           previous_phase_(previous_phase) {}
     bool RequiresIterationEvents(const AnimationEffect&) override {
       return false;
@@ -376,8 +376,8 @@
     EventTarget* GetEventTarget() const;
     Document& GetDocument() const { return transition_target_->GetDocument(); }
 
-    Member<Element> transition_target_;
     PropertyHandle property_;
+    Member<Element> transition_target_;
     Timing::Phase previous_phase_;
   };
 };
diff --git a/third_party/blink/renderer/core/animation/document_timeline.cc b/third_party/blink/renderer/core/animation/document_timeline.cc
index c2de774..ebcf8e6 100644
--- a/third_party/blink/renderer/core/animation/document_timeline.cc
+++ b/third_party/blink/renderer/core/animation/document_timeline.cc
@@ -81,8 +81,8 @@
     : AnimationTimeline(document),
       origin_time_(origin_time),
       zero_time_(base::TimeTicks() + origin_time_),
-      zero_time_initialized_(false),
-      playback_rate_(1) {
+      playback_rate_(1),
+      zero_time_initialized_(false) {
   if (!timing)
     timing_ = MakeGarbageCollected<DocumentTimelineTiming>(this);
   else
diff --git a/third_party/blink/renderer/core/animation/document_timeline.h b/third_party/blink/renderer/core/animation/document_timeline.h
index 8b59df6..8be743c1 100644
--- a/third_party/blink/renderer/core/animation/document_timeline.h
+++ b/third_party/blink/renderer/core/animation/document_timeline.h
@@ -111,7 +111,6 @@
   // TODO(crbug.com/1162960) Convert DocumentTimeline::zero_time_ from
   // base::TimeTicks to AnimationTimeDelta
   base::TimeTicks zero_time_;
-  bool zero_time_initialized_;
 
   double playback_rate_;
 
@@ -120,6 +119,8 @@
 
   Member<PlatformTiming> timing_;
 
+  bool zero_time_initialized_;
+
   class DocumentTimelineTiming final : public PlatformTiming {
    public:
     explicit DocumentTimelineTiming(DocumentTimeline* timeline)
diff --git a/third_party/blink/renderer/core/css/css_computed_style_declaration.h b/third_party/blink/renderer/core/css/css_computed_style_declaration.h
index d0f7585..96763549 100644
--- a/third_party/blink/renderer/core/css/css_computed_style_declaration.h
+++ b/third_party/blink/renderer/core/css/css_computed_style_declaration.h
@@ -130,9 +130,9 @@
 
   bool CssPropertyMatches(CSSPropertyID, const CSSValue&) const override;
 
+  AtomicString pseudo_argument_;
   Member<Node> node_;
   PseudoId pseudo_element_specifier_;
-  AtomicString pseudo_argument_;
   bool allow_visited_style_;
 };
 
diff --git a/third_party/blink/renderer/core/css/css_font_face_src_value.h b/third_party/blink/renderer/core/css/css_font_face_src_value.h
index 19ce2f4..515e345 100644
--- a/third_party/blink/renderer/core/css/css_font_face_src_value.h
+++ b/third_party/blink/renderer/core/css/css_font_face_src_value.h
@@ -75,8 +75,8 @@
         absolute_resource_(absolute_resource),
         specified_resource_(specified_resource),
         referrer_(referrer),
-        is_local_(local),
         world_(std::move(world)),
+        is_local_(local),
         origin_clean_(origin_clean),
         is_ad_related_(is_ad_related) {}
 
@@ -120,19 +120,6 @@
   }
 
  private:
-  void RestoreCachedResourceIfNeeded(ExecutionContext*) const;
-
-  const String absolute_resource_;
-  const String specified_resource_;
-  String format_;
-  const Referrer referrer_;
-  const bool is_local_;
-  const scoped_refptr<const DOMWrapperWorld> world_;
-  const OriginClean origin_clean_;
-  bool is_ad_related_;
-
-  Vector<FontTechnology> technologies_;
-
   class FontResourceHelper : public GarbageCollected<FontResourceHelper>,
                              public FontResourceClient {
    public:
@@ -150,7 +137,19 @@
       return "CSSFontFaceSrcValue::FontResourceHelper";
     }
   };
+
+  void RestoreCachedResourceIfNeeded(ExecutionContext*) const;
+
+  Vector<FontTechnology> technologies_;
+  const String absolute_resource_;
+  const String specified_resource_;
+  String format_;
+  const Referrer referrer_;
+  const scoped_refptr<const DOMWrapperWorld> world_;
   mutable Member<FontResourceHelper> fetched_;
+  const bool is_local_;
+  const OriginClean origin_clean_;
+  bool is_ad_related_;
 };
 
 template <>
diff --git a/third_party/blink/renderer/core/css/css_style_sheet.cc b/third_party/blink/renderer/core/css/css_style_sheet.cc
index 9e7a4c1..6b94d36 100644
--- a/third_party/blink/renderer/core/css/css_style_sheet.cc
+++ b/third_party/blink/renderer/core/css/css_style_sheet.cc
@@ -186,9 +186,9 @@
                              bool is_inline_stylesheet,
                              const TextPosition& start_position)
     : contents_(contents),
-      is_inline_stylesheet_(is_inline_stylesheet),
       owner_node_(&owner_node),
-      start_position_(start_position) {
+      start_position_(start_position),
+      is_inline_stylesheet_(is_inline_stylesheet) {
 #if DCHECK_IS_ON()
   DCHECK(IsAcceptableCSSStyleSheetParent(owner_node));
 #endif
diff --git a/third_party/blink/renderer/core/css/css_style_sheet.h b/third_party/blink/renderer/core/css/css_style_sheet.h
index 59c09e22..6d5ad15a 100644
--- a/third_party/blink/renderer/core/css/css_style_sheet.h
+++ b/third_party/blink/renderer/core/css/css_style_sheet.h
@@ -263,18 +263,9 @@
   bool AlternateFromConstructor() const { return alternate_from_constructor_; }
 
   Member<StyleSheetContents> contents_;
-  bool is_inline_stylesheet_ = false;
-  bool is_for_css_module_script_ = false;
-  bool is_disabled_ = false;
-  bool load_completed_ = false;
-  // This alternate variable is only used for constructed CSSStyleSheet.
-  // For other CSSStyleSheet, consult the alternate attribute.
-  bool alternate_from_constructor_ = false;
-  bool enable_rule_access_for_inspector_ = false;
-
-  String title_;
   Member<const MediaQuerySet> media_queries_;
   MediaQueryResultFlags media_query_result_flags_;
+  String title_;
 
   Member<Node> owner_node_;
   Member<CSSRule> owner_rule_;
@@ -288,6 +279,15 @@
   Member<MediaList> media_cssom_wrapper_;
   mutable HeapVector<Member<CSSRule>> child_rule_cssom_wrappers_;
   mutable Member<CSSRuleList> rule_list_cssom_wrapper_;
+
+  bool is_inline_stylesheet_ = false;
+  bool is_for_css_module_script_ = false;
+  bool is_disabled_ = false;
+  bool load_completed_ = false;
+  // This alternate variable is only used for constructed CSSStyleSheet.
+  // For other CSSStyleSheet, consult the alternate attribute.
+  bool alternate_from_constructor_ = false;
+  bool enable_rule_access_for_inspector_ = false;
 };
 
 inline CSSStyleSheet::RuleMutationScope::RuleMutationScope(CSSStyleSheet* sheet)
diff --git a/third_party/blink/renderer/core/css/font_display.h b/third_party/blink/renderer/core/css/font_display.h
index 09a3c66..7ce0a6f 100644
--- a/third_party/blink/renderer/core/css/font_display.h
+++ b/third_party/blink/renderer/core/css/font_display.h
@@ -5,13 +5,15 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_FONT_DISPLAY_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_FONT_DISPLAY_H_
 
+#include <cstdint>
+
 namespace blink {
 
 class CSSValue;
 
 // These values are persisted to logs. Entries should not be renumbered and
 // numeric values should never be reused.
-enum class FontDisplay {
+enum class FontDisplay : uint8_t {
   kAuto,
   kBlock,
   kSwap,
diff --git a/third_party/blink/renderer/core/css/font_face.cc b/third_party/blink/renderer/core/css/font_face.cc
index d4851b1..003aca4 100644
--- a/third_party/blink/renderer/core/css/font_face.cc
+++ b/third_party/blink/renderer/core/css/font_face.cc
@@ -243,8 +243,8 @@
                    const StyleRuleFontFace* style_rule,
                    bool is_user_style)
     : ExecutionContextClient(context),
-      status_(kUnloaded),
       style_rule_(style_rule),
+      status_(kUnloaded),
       is_user_style_(is_user_style) {}
 
 FontFace::FontFace(ExecutionContext* context,
diff --git a/third_party/blink/renderer/core/css/font_face.h b/third_party/blink/renderer/core/css/font_face.h
index 38dfca343..b6ba7eb 100644
--- a/third_party/blink/renderer/core/css/font_face.h
+++ b/third_party/blink/renderer/core/css/font_face.h
@@ -65,7 +65,7 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  enum LoadStatusType { kUnloaded, kLoading, kLoaded, kError };
+  enum LoadStatusType : uint8_t { kUnloaded, kLoading, kLoaded, kError };
 
   static FontFace* Create(
       ExecutionContext* execution_context,
@@ -191,6 +191,7 @@
   using LoadedProperty =
       ScriptPromiseProperty<Member<FontFace>, Member<DOMException>>;
 
+  HeapVector<Member<LoadFontCallback>> callbacks_;
   AtomicString family_;
   String ots_parse_message_;
   Member<const CSSValue> style_;
@@ -205,14 +206,13 @@
   Member<const CSSValue> line_gap_override_;
   Member<const CSSValue> advance_override_;
   Member<const CSSValue> size_adjust_;
-  LoadStatusType status_;
   Member<DOMException> error_;
 
   Member<LoadedProperty> loaded_property_;
   Member<CSSFontFace> css_font_face_;
   Member<const StyleRuleFontFace> style_rule_;
-  HeapVector<Member<LoadFontCallback>> callbacks_;
 
+  LoadStatusType status_;
   // Note that we will also need to distinguish font faces in different tree
   // scopes when we allow @font-face in shadow DOM. See crbug.com/336876.
   bool is_user_style_ = false;
diff --git a/third_party/blink/renderer/core/css/media_query.cc b/third_party/blink/renderer/core/css/media_query.cc
index ff54d82..85e12f3 100644
--- a/third_party/blink/renderer/core/css/media_query.cc
+++ b/third_party/blink/renderer/core/css/media_query.cc
@@ -79,16 +79,16 @@
 MediaQuery::MediaQuery(RestrictorType restrictor,
                        String media_type,
                        const MediaQueryExpNode* exp_node)
-    : restrictor_(restrictor),
-      media_type_(AttemptStaticStringCreation(media_type.LowerASCII())),
+    : media_type_(AttemptStaticStringCreation(media_type.LowerASCII())),
       exp_node_(exp_node),
+      restrictor_(restrictor),
       has_unknown_(exp_node_ ? exp_node_->HasUnknown() : false) {}
 
 MediaQuery::MediaQuery(const MediaQuery& o)
-    : restrictor_(o.restrictor_),
-      media_type_(o.media_type_),
-      exp_node_(o.exp_node_),
+    : media_type_(o.media_type_),
       serialization_cache_(o.serialization_cache_),
+      exp_node_(o.exp_node_),
+      restrictor_(o.restrictor_),
       has_unknown_(o.has_unknown_) {}
 
 MediaQuery::~MediaQuery() = default;
diff --git a/third_party/blink/renderer/core/css/media_query.h b/third_party/blink/renderer/core/css/media_query.h
index 777aa39..4597d01 100644
--- a/third_party/blink/renderer/core/css/media_query.h
+++ b/third_party/blink/renderer/core/css/media_query.h
@@ -47,7 +47,7 @@
 
 class CORE_EXPORT MediaQuery : public GarbageCollected<MediaQuery> {
  public:
-  enum class RestrictorType { kOnly, kNot, kNone };
+  enum class RestrictorType : uint8_t { kOnly, kNot, kNone };
 
   static MediaQuery* CreateNotAll();
 
@@ -67,11 +67,11 @@
   MediaQuery& operator=(const MediaQuery&) = delete;
   bool BehaveAsNotAll() const;
 
-  RestrictorType restrictor_;
   String media_type_;
-  Member<const MediaQueryExpNode> exp_node_;
   String serialization_cache_;
+  Member<const MediaQueryExpNode> exp_node_;
 
+  RestrictorType restrictor_;
   // Set if |exp_node_| contains any MediaQueryUnknownExpNode instances.
   //
   // If the runtime flag CSSMediaQueries4 is *not* enabled, this will cause the
diff --git a/third_party/blink/renderer/core/css/media_query_exp.h b/third_party/blink/renderer/core/css/media_query_exp.h
index 0f6b131..2df142a 100644
--- a/third_party/blink/renderer/core/css/media_query_exp.h
+++ b/third_party/blink/renderer/core/css/media_query_exp.h
@@ -147,6 +147,10 @@
 
   Type type_ = Type::kInvalid;
 
+  // Used when the value can't be represented by the union below (e.g. math
+  // functions). Also used for style features in style container queries.
+  Member<const CSSValue> css_value_;
+
   union {
     CSSValueID id_;
     struct {
@@ -158,10 +162,6 @@
       unsigned denominator;
     } ratio_;
   };
-
-  // Used when the value can't be represented by the above union (e.g. math
-  // functions). Also used for style features in style container queries.
-  Member<const CSSValue> css_value_;
 };
 
 // https://drafts.csswg.org/mediaqueries-4/#mq-syntax
diff --git a/third_party/blink/renderer/core/css/remote_font_face_source.h b/third_party/blink/renderer/core/css/remote_font_face_source.h
index 9db74e2..0f55d1c 100644
--- a/third_party/blink/renderer/core/css/remote_font_face_source.h
+++ b/third_party/blink/renderer/core/css/remote_font_face_source.h
@@ -21,7 +21,11 @@
 class RemoteFontFaceSource final : public CSSFontFaceSource,
                                    public FontResourceClient {
  public:
-  enum Phase { kNoLimitExceeded, kShortLimitExceeded, kLongLimitExceeded };
+  enum Phase : uint8_t {
+    kNoLimitExceeded,
+    kShortLimitExceeded,
+    kLongLimitExceeded
+  };
 
   RemoteFontFaceSource(CSSFontFace*,
                        FontSelector*,
@@ -74,7 +78,7 @@
   // the font is loaded from memory cache synchronously, and hence, made
   // immediately available. As we never need to use a fallback for it, using
   // other DisplayPeriod values seem artificial. So we use a special value.
-  enum DisplayPeriod {
+  enum DisplayPeriod : uint8_t {
     kBlockPeriod,
     kSwapPeriod,
     kFailurePeriod,
@@ -161,10 +165,11 @@
   // |nullptr| if font is not loaded or failed to decode.
   String url_;
 
+  FontLoadHistograms histograms_;
+
   FontDisplay display_;
   Phase phase_;
   DisplayPeriod period_;
-  FontLoadHistograms histograms_;
   bool is_intervention_triggered_;
   bool finished_before_document_rendering_begin_;
 
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
index f565b3a..29d9eca 100644
--- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc
@@ -368,8 +368,8 @@
 }
 
 StyleResolver::StyleResolver(Document& document)
-    : document_(document),
-      initial_style_(ComputedStyle::CreateInitialStyleSingleton()) {
+    : initial_style_(ComputedStyle::CreateInitialStyleSingleton()),
+      document_(document) {
   UpdateMediaType();
 }
 
diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.h b/third_party/blink/renderer/core/css/resolver/style_resolver.h
index 25b2091..7f75550 100644
--- a/third_party/blink/renderer/core/css/resolver/style_resolver.h
+++ b/third_party/blink/renderer/core/css/resolver/style_resolver.h
@@ -305,10 +305,10 @@
                                 Functor& func) const;
 
   MatchedPropertiesCache matched_properties_cache_;
-  Member<Document> document_;
   scoped_refptr<const ComputedStyle> initial_style_;
   SelectorFilter selector_filter_;
 
+  Member<Document> document_;
   Member<StyleRuleUsageTracker> tracker_;
 
   // This is a dummy/disconnected element that we use for FormattedText
diff --git a/third_party/blink/renderer/core/display_lock/display_lock_document_state.h b/third_party/blink/renderer/core/display_lock/display_lock_document_state.h
index 0fdd6cd5..35449f30 100644
--- a/third_party/blink/renderer/core/display_lock/display_lock_document_state.h
+++ b/third_party/blink/renderer/core/display_lock/display_lock_document_state.h
@@ -208,17 +208,17 @@
   Member<IntersectionObserver> intersection_observer_ = nullptr;
   HeapHashSet<WeakMember<DisplayLockContext>> display_lock_contexts_;
 
+  // Contains all of the currently forced node infos, each of which represents
+  // the node that caused the scope to be created.
+  HeapVector<ForcedNodeInfo> forced_node_infos_;
+  HeapVector<ForcedRangeInfo> forced_range_infos_;
+
   int locked_display_lock_count_ = 0;
   int display_lock_blocking_all_activation_count_ = 0;
 
   // If greater than 0, then the activatable locks are forced.
   int activatable_display_locks_forced_ = 0;
 
-  // Contains all of the currently forced node infos, each of which represents
-  // the node that caused the scope to be created.
-  HeapVector<ForcedNodeInfo> forced_node_infos_;
-  HeapVector<ForcedRangeInfo> forced_range_infos_;
-
   bool printing_ = false;
 
   base::TimeTicks last_lock_update_timestamp_ = base::TimeTicks();
diff --git a/third_party/blink/renderer/core/dom/character_data.cc b/third_party/blink/renderer/core/dom/character_data.cc
index a98e32d0..71e6e45 100644
--- a/third_party/blink/renderer/core/dom/character_data.cc
+++ b/third_party/blink/renderer/core/dom/character_data.cc
@@ -39,12 +39,11 @@
 namespace blink {
 
 void CharacterData::MakeParkable() {
-  if (is_parkable_)
+  if (absl::holds_alternative<ParkableString>(data_))
     return;
 
-  parkable_data_ = ParkableString(data_.ReleaseImpl());
-  data_ = String();
-  is_parkable_ = true;
+  auto released = absl::get<String>(data_).ReleaseImpl();
+  data_ = ParkableString(std::move(released));
 }
 
 void CharacterData::setData(const String& data) {
@@ -196,10 +195,6 @@
                                      unsigned new_length,
                                      UpdateSource source) {
   String old_data = this->data();
-  if (is_parkable_) {
-    is_parkable_ = false;
-    parkable_data_ = ParkableString();
-  }
   data_ = new_data;
 
   DCHECK(!GetLayoutObject() || IsTextNode());
diff --git a/third_party/blink/renderer/core/dom/character_data.h b/third_party/blink/renderer/core/dom/character_data.h
index 20e983a..ac0212c 100644
--- a/third_party/blink/renderer/core/dom/character_data.h
+++ b/third_party/blink/renderer/core/dom/character_data.h
@@ -24,6 +24,7 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_DOM_CHARACTER_DATA_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_DOM_CHARACTER_DATA_H_
 
+#include "third_party/abseil-cpp/absl/types/variant.h"
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/dom/node.h"
 #include "third_party/blink/renderer/platform/bindings/parkable_string.h"
@@ -41,11 +42,15 @@
   // Makes the data Parkable. This enables de-duplication and compression.
   void MakeParkable();
   const String& data() const {
-    return is_parkable_ ? parkable_data_.ToString() : data_;
+    if (auto* parked = absl::get_if<ParkableString>(&data_))
+      return parked->ToString();
+    return absl::get<String>(data_);
   }
   void setData(const String&);
   unsigned length() const {
-    return is_parkable_ ? parkable_data_.length() : data_.length();
+    if (auto* parked = absl::get_if<ParkableString>(&data_))
+      return parked->length();
+    return absl::get<String>(data_).length();
   }
   String substringData(unsigned offset, unsigned count, ExceptionState&);
   void appendData(const String&);
@@ -67,9 +72,7 @@
   CharacterData(TreeScope& tree_scope,
                 const String& text,
                 ConstructionType type)
-      : Node(&tree_scope, type),
-        is_parkable_(false),
-        data_(!text.IsNull() ? text : g_empty_string) {
+      : Node(&tree_scope, type), data_(!text.IsNull() ? text : g_empty_string) {
     DCHECK(type == kCreateComment || type == kCreateText ||
            type == kCreateCdataSection ||
            type == kCreateProcessingInstruction || type == kCreateEditingText);
@@ -77,10 +80,6 @@
 
   void SetDataWithoutUpdate(const String& data) {
     DCHECK(!data.IsNull());
-    if (is_parkable_) {
-      is_parkable_ = false;
-      parkable_data_ = ParkableString();
-    }
     data_ = data;
   }
   enum UpdateSource {
@@ -89,9 +88,7 @@
   };
   void DidModifyData(const String& old_value, UpdateSource);
 
-  bool is_parkable_;
-  ParkableString parkable_data_;
-  String data_;
+  absl::variant<ParkableString, String> data_;
 
  private:
   String nodeValue() const final;
diff --git a/third_party/blink/renderer/core/dom/child_list_mutation_scope.h b/third_party/blink/renderer/core/dom/child_list_mutation_scope.h
index 32806bc..62011e4 100644
--- a/third_party/blink/renderer/core/dom/child_list_mutation_scope.h
+++ b/third_party/blink/renderer/core/dom/child_list_mutation_scope.h
@@ -73,10 +73,9 @@
   bool IsAddedNodeInOrder(Node&);
   bool IsRemovedNodeInOrder(Node&);
 
-  Member<Node> target_;
-
   HeapVector<Member<Node>> removed_nodes_;
   HeapVector<Member<Node>> added_nodes_;
+  Member<Node> target_;
   Member<Node> previous_sibling_;
   Member<Node> next_sibling_;
   Member<Node> last_added_;
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 49cc6fc..375cd097 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -6066,7 +6066,7 @@
     return ScriptPromise::RejectWithDOMException(
         script_state,
         MakeGarbageCollected<DOMException>(
-            DOMExceptionCode::kSecurityError,
+            DOMExceptionCode::kInvalidStateError,
             "requestStorageAccessForOrigin: Cannot be used unless "
             "the document is fully active."));
   }
@@ -6174,7 +6174,7 @@
     // Note that in detached frames, resolvers are not able to return a promise.
     return ScriptPromise::RejectWithDOMException(
         script_state, MakeGarbageCollected<DOMException>(
-                          DOMExceptionCode::kSecurityError,
+                          DOMExceptionCode::kInvalidStateError,
                           "requestStorageAccess: Cannot be used unless the "
                           "document is fully active."));
   }
diff --git a/third_party/blink/renderer/core/dom/dom_token_list.h b/third_party/blink/renderer/core/dom/dom_token_list.h
index b7a4e65..9ebe5e2 100644
--- a/third_party/blink/renderer/core/dom/dom_token_list.h
+++ b/third_party/blink/renderer/core/dom/dom_token_list.h
@@ -44,7 +44,7 @@
 
  public:
   DOMTokenList(Element& element, const QualifiedName& attr)
-      : element_(element), attribute_name_(attr) {}
+      : attribute_name_(attr), element_(element) {}
   DOMTokenList(const DOMTokenList&) = delete;
   DOMTokenList& operator=(const DOMTokenList&) = delete;
   ~DOMTokenList() override = default;
@@ -86,12 +86,12 @@
   void UpdateWithTokenSet(const SpaceSplitString&);
 
   SpaceSplitString token_set_;
-  const Member<Element> element_;
   // Normal DOMTokenList instances is associated to an attribute name.
   // So |attribute_name_| is typically an html_names::kFooAttr.
   // CustomStateTokenList is associated to no attribute name.
   // |attribute_name_| is |g_null_name| in that case.
   const QualifiedName attribute_name_;
+  const Member<Element> element_;
   bool is_in_update_step_ = false;
 };
 
diff --git a/third_party/blink/renderer/core/dom/processing_instruction.cc b/third_party/blink/renderer/core/dom/processing_instruction.cc
index 2c04183a..c290052 100644
--- a/third_party/blink/renderer/core/dom/processing_instruction.cc
+++ b/third_party/blink/renderer/core/dom/processing_instruction.cc
@@ -74,9 +74,11 @@
 }
 
 Node* ProcessingInstruction::Clone(Document& factory, CloneChildrenFlag) const {
+  DCHECK(absl::holds_alternative<String>(data_));
   // FIXME: Is it a problem that this does not copy local_href_?
   // What about other data members?
-  return MakeGarbageCollected<ProcessingInstruction>(factory, target_, data_);
+  return MakeGarbageCollected<ProcessingInstruction>(factory, target_,
+                                                     absl::get<String>(data_));
 }
 
 void ProcessingInstruction::DidAttributeChanged() {
@@ -98,11 +100,13 @@
       parentNode() != GetDocument())
     return false;
 
+  DCHECK(absl::holds_alternative<String>(data_));
   // see http://www.w3.org/TR/xml-stylesheet/
   // ### support stylesheet included in a fragment of this (or another) document
   // ### make sure this gets called when adding from javascript
   bool attrs_ok;
-  const HashMap<String, String> attrs = ParseAttributes(data_, attrs_ok);
+  const HashMap<String, String> attrs =
+      ParseAttributes(absl::get<String>(data_), attrs_ok);
   if (!attrs_ok)
     return false;
   HashMap<String, String>::const_iterator i = attrs.find("type");
diff --git a/third_party/blink/renderer/core/dom/scripted_idle_task_controller_test.cc b/third_party/blink/renderer/core/dom/scripted_idle_task_controller_test.cc
index ecfd091..ad4d036c7 100644
--- a/third_party/blink/renderer/core/dom/scripted_idle_task_controller_test.cc
+++ b/third_party/blink/renderer/core/dom/scripted_idle_task_controller_test.cc
@@ -11,6 +11,9 @@
 #include "third_party/blink/renderer/bindings/core/v8/v8_idle_request_callback.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_idle_request_options.h"
 #include "third_party/blink/renderer/core/testing/null_execution_context.h"
+#include "third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h"
+#include "third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h"
+#include "third_party/blink/renderer/platform/scheduler/public/page_scheduler.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
 #include "third_party/blink/renderer/platform/scheduler/test/fake_task_runner.h"
 #include "third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.h"
@@ -74,33 +77,127 @@
       base::MakeRefCounted<scheduler::FakeTaskRunner>();
 };
 
+class IdleTaskControllerFrameScheduler : public FrameScheduler {
+ public:
+  explicit IdleTaskControllerFrameScheduler(
+      MockScriptedIdleTaskControllerScheduler* scripted_idle_scheduler)
+      : scripted_idle_scheduler_(scripted_idle_scheduler),
+        page_scheduler_(scheduler::CreateDummyPageScheduler()) {}
+  ~IdleTaskControllerFrameScheduler() override = default;
+
+  scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunner(TaskType) override {
+    DCHECK(WTF::IsMainThread());
+    return scripted_idle_scheduler_->TaskRunner();
+  }
+
+  PageScheduler* GetPageScheduler() const override {
+    return page_scheduler_.get();
+  }
+  scheduler::WebAgentGroupScheduler* GetAgentGroupScheduler() override {
+    return &page_scheduler_->GetAgentGroupScheduler();
+  }
+
+  void SetPreemptedForCooperativeScheduling(Preempted) override {}
+  void SetFrameVisible(bool) override {}
+  bool IsFrameVisible() const override { return true; }
+  bool IsPageVisible() const override { return true; }
+  void SetPaused(bool) override {}
+  void SetShouldReportPostedTasksWhenDisabled(bool) override {}
+  void SetCrossOriginToNearestMainFrame(bool) override {}
+  bool IsCrossOriginToNearestMainFrame() const override { return false; }
+  void SetIsAdFrame(bool is_ad_frame) override {}
+  bool IsAdFrame() const override { return false; }
+  bool IsInEmbeddedFrameTree() const override { return false; }
+  void TraceUrlChange(const String&) override {}
+  void AddTaskTime(base::TimeDelta) override {}
+  FrameType GetFrameType() const override { return FrameType::kMainFrame; }
+  WebScopedVirtualTimePauser CreateWebScopedVirtualTimePauser(
+      const String& name,
+      WebScopedVirtualTimePauser::VirtualTaskDuration) override {
+    return WebScopedVirtualTimePauser();
+  }
+  void DidStartProvisionalLoad() override {}
+  void DidCommitProvisionalLoad(bool, FrameScheduler::NavigationType) override {
+  }
+  void OnFirstContentfulPaintInMainFrame() override {}
+  void OnFirstMeaningfulPaint() override {}
+  void OnLoad() override {}
+  bool IsExemptFromBudgetBasedThrottling() const override { return false; }
+  std::unique_ptr<blink::mojom::blink::PauseSubresourceLoadingHandle>
+  GetPauseSubresourceLoadingHandle() override {
+    return nullptr;
+  }
+  std::unique_ptr<scheduler::WebResourceLoadingTaskRunnerHandle>
+  CreateResourceLoadingTaskRunnerHandle() override {
+    return scheduler::WebResourceLoadingTaskRunnerHandle::CreateUnprioritized(
+        scripted_idle_scheduler_->TaskRunner());
+  }
+  std::unique_ptr<scheduler::WebResourceLoadingTaskRunnerHandle>
+  CreateResourceLoadingMaybeUnfreezableTaskRunnerHandle() override {
+    return scheduler::WebResourceLoadingTaskRunnerHandle::CreateUnprioritized(
+        scripted_idle_scheduler_->TaskRunner());
+  }
+  std::unique_ptr<WebSchedulingTaskQueue> CreateWebSchedulingTaskQueue(
+      WebSchedulingPriority) override {
+    return nullptr;
+  }
+  ukm::SourceId GetUkmSourceId() override { return ukm::kInvalidSourceId; }
+  void OnStartedUsingFeature(SchedulingPolicy::Feature feature,
+                             const SchedulingPolicy& policy) override {}
+  void OnStoppedUsingFeature(SchedulingPolicy::Feature feature,
+                             const SchedulingPolicy& policy) override {}
+  base::WeakPtr<FrameOrWorkerScheduler> GetSchedulingAffectingFeatureWeakPtr()
+      override {
+    return weak_ptr_factory_.GetWeakPtr();
+  }
+  WTF::HashSet<SchedulingPolicy::Feature>
+  GetActiveFeaturesTrackedForBackForwardCacheMetrics() override {
+    return WTF::HashSet<SchedulingPolicy::Feature>();
+  }
+  base::WeakPtr<FrameScheduler> GetWeakPtr() override {
+    return weak_ptr_factory_.GetWeakPtr();
+  }
+  void ReportActiveSchedulerTrackedFeatures() override {}
+  scoped_refptr<base::SingleThreadTaskRunner> CompositorTaskRunner() override {
+    return scripted_idle_scheduler_->TaskRunner();
+  }
+
+ private:
+  MockScriptedIdleTaskControllerScheduler* scripted_idle_scheduler_;
+  std::unique_ptr<PageScheduler> page_scheduler_;
+  base::WeakPtrFactory<FrameScheduler> weak_ptr_factory_{this};
+};
+
 class MockIdleTask : public IdleTask {
  public:
   MOCK_METHOD1(invoke, void(IdleDeadline*));
 };
 }  // namespace
 
-class ScriptedIdleTaskControllerTest : public testing::Test {
+class ScopedNullExecutionContext {
  public:
-  ~ScriptedIdleTaskControllerTest() override {
+  explicit ScopedNullExecutionContext(
+      MockScriptedIdleTaskControllerScheduler* scheduler)
+      : execution_context_(MakeGarbageCollected<NullExecutionContext>(
+            std::make_unique<IdleTaskControllerFrameScheduler>(scheduler))) {}
+
+  ~ScopedNullExecutionContext() {
     execution_context_->NotifyContextDestroyed();
   }
 
-  void SetUp() override {
-    execution_context_ = MakeGarbageCollected<NullExecutionContext>();
-  }
+  ExecutionContext* GetExecutionContext() { return execution_context_; }
 
- protected:
+ private:
   Persistent<ExecutionContext> execution_context_;
 };
 
-TEST_F(ScriptedIdleTaskControllerTest, RunCallback) {
+TEST(ScriptedIdleTaskControllerTest, RunCallback) {
   MockScriptedIdleTaskControllerScheduler scheduler(ShouldYield(false));
   ScopedSchedulerOverrider scheduler_overrider(&scheduler,
                                                scheduler.TaskRunner());
-
-  ScriptedIdleTaskController* controller =
-      ScriptedIdleTaskController::Create(execution_context_);
+  ScopedNullExecutionContext execution_context(&scheduler);
+  ScriptedIdleTaskController* controller = ScriptedIdleTaskController::Create(
+      execution_context.GetExecutionContext());
 
   Persistent<MockIdleTask> idle_task(MakeGarbageCollected<MockIdleTask>());
   IdleRequestOptions* options = IdleRequestOptions::Create();
@@ -115,13 +212,13 @@
   EXPECT_FALSE(scheduler.HasIdleTask());
 }
 
-TEST_F(ScriptedIdleTaskControllerTest, DontRunCallbackWhenAskedToYield) {
+TEST(ScriptedIdleTaskControllerTest, DontRunCallbackWhenAskedToYield) {
   MockScriptedIdleTaskControllerScheduler scheduler(ShouldYield(true));
   ScopedSchedulerOverrider scheduler_overrider(&scheduler,
                                                scheduler.TaskRunner());
-
-  ScriptedIdleTaskController* controller =
-      ScriptedIdleTaskController::Create(execution_context_);
+  ScopedNullExecutionContext execution_context(&scheduler);
+  ScriptedIdleTaskController* controller = ScriptedIdleTaskController::Create(
+      execution_context.GetExecutionContext());
 
   Persistent<MockIdleTask> idle_task(MakeGarbageCollected<MockIdleTask>());
   IdleRequestOptions* options = IdleRequestOptions::Create();
@@ -136,12 +233,13 @@
   EXPECT_TRUE(scheduler.HasIdleTask());
 }
 
-TEST_F(ScriptedIdleTaskControllerTest, RunCallbacksAsyncWhenUnpaused) {
+TEST(ScriptedIdleTaskControllerTest, RunCallbacksAsyncWhenUnpaused) {
   MockScriptedIdleTaskControllerScheduler scheduler(ShouldYield(true));
   ScopedSchedulerOverrider scheduler_overrider(&scheduler,
                                                scheduler.TaskRunner());
-  ScriptedIdleTaskController* controller =
-      ScriptedIdleTaskController::Create(execution_context_);
+  ScopedNullExecutionContext execution_context(&scheduler);
+  ScriptedIdleTaskController* controller = ScriptedIdleTaskController::Create(
+      execution_context.GetExecutionContext());
 
   // Register an idle task with a deadline.
   Persistent<MockIdleTask> idle_task(MakeGarbageCollected<MockIdleTask>());
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.h b/third_party/blink/renderer/core/html/parser/html_document_parser.h
index 16c258b..3eb88c5e 100644
--- a/third_party/blink/renderer/core/html/parser/html_document_parser.h
+++ b/third_party/blink/renderer/core/html/parser/html_document_parser.h
@@ -237,8 +237,8 @@
   // called when data is available.
   bool ShouldPumpTokenizerNowForFinishAppend() const;
 
-  const HTMLParserOptions options_;
   HTMLInputStream input_;
+  const HTMLParserOptions options_;
   Member<HTMLParserReentryPermit> reentry_permit_ =
       MakeGarbageCollected<HTMLParserReentryPermit>();
 
diff --git a/third_party/blink/renderer/core/html/parser/html_tree_builder.cc b/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
index 86a4f4c..38a7316 100644
--- a/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
+++ b/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
@@ -238,12 +238,12 @@
                                  const HTMLParserOptions& options,
                                  bool include_shadow_roots,
                                  HTMLTokenProducer* token_producer)
-    : frameset_ok_(true),
-      tree_(parser->ReentryPermit(), document, parser_content_policy),
+    : tree_(parser->ReentryPermit(), document, parser_content_policy),
       insertion_mode_(kInitialMode),
       original_insertion_mode_(kInitialMode),
       should_skip_leading_newline_(false),
       include_shadow_roots_(include_shadow_roots),
+      frameset_ok_(true),
       parser_(parser),
       script_to_process_start_position_(UninitializedPositionValue1()),
       options_(options),
diff --git a/third_party/blink/renderer/core/html/parser/html_tree_builder.h b/third_party/blink/renderer/core/html/parser/html_tree_builder.h
index 6a293ade..733612c 100644
--- a/third_party/blink/renderer/core/html/parser/html_tree_builder.h
+++ b/third_party/blink/renderer/core/html/parser/html_tree_builder.h
@@ -233,10 +233,6 @@
   };
 
   // https://html.spec.whatwg.org/C/#frameset-ok-flag
-  bool frameset_ok_;
-#if DCHECK_IS_ON()
-  bool is_attached_ = true;
-#endif
   FragmentParsingContext fragment_context_;
   HTMLConstructionSite tree_;
 
@@ -255,6 +251,11 @@
 
   const bool include_shadow_roots_;
 
+  bool frameset_ok_;
+#if DCHECK_IS_ON()
+  bool is_attached_ = true;
+#endif
+
   // We access parser because HTML5 spec requires that we be able to change the
   // state of the tokenizer from within parser actions. We also need it to track
   // the current position.
diff --git a/third_party/blink/renderer/core/layout/deferred_shaping_controller.h b/third_party/blink/renderer/core/layout/deferred_shaping_controller.h
index 1550f6f..864386b 100644
--- a/third_party/blink/renderer/core/layout/deferred_shaping_controller.h
+++ b/third_party/blink/renderer/core/layout/deferred_shaping_controller.h
@@ -114,9 +114,9 @@
  private:
   size_t ReshapeAllDeferredInternal();
 
-  Member<Document> document_;
   TaskHandle reshaping_task_handle_;
   HeapHashSet<Member<Element>> deferred_elements_;
+  Member<Document> document_;
   LayoutUnit current_viewport_bottom_ = kIndefiniteSize;
   LayoutUnit current_minimum_top_;
   bool allow_deferred_shaping_ = false;
diff --git a/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc b/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc
index 6d322af6..44b6364 100644
--- a/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/flexible_box_algorithm.cc
@@ -942,13 +942,13 @@
         line_context.cross_axis_offset_ - cross_axis_start_edge;
     LayoutUnit new_offset = cross_axis_content_size - original_offset -
                             line_context.cross_axis_extent_;
+    LayoutUnit delta = new_offset - original_offset;
     if (flex_line_outputs) {
-      line_context.cross_axis_offset_ = new_offset;
-      (*flex_line_outputs)[i].cross_axis_offset = new_offset;
+      line_context.cross_axis_offset_ += delta;
+      (*flex_line_outputs)[i].cross_axis_offset += delta;
     }
-    LayoutUnit wrap_reverse_difference = new_offset - original_offset;
     for (FlexItem& flex_item : line_context.line_items_)
-      flex_item.offset_->cross_axis_offset += wrap_reverse_difference;
+      flex_item.offset_->cross_axis_offset += delta;
   }
 }
 
@@ -1263,7 +1263,8 @@
     line_index = flex_lines_.size() - line_index - 1;
 
   DCHECK_LT(item_index, flex_lines_[line_index].line_items_.size());
-  if (Style()->ResolvedIsColumnReverseFlexDirection())
+  if (Style()->ResolvedIsColumnReverseFlexDirection() ||
+      Style()->ResolvedIsRowReverseFlexDirection())
     item_index = flex_lines_[line_index].line_items_.size() - item_index - 1;
   return const_cast<FlexItem*>(
       &flex_lines_[line_index].line_items_[item_index]);
diff --git a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
index fd12c1a7..3e9a170 100644
--- a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
+++ b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
@@ -346,8 +346,8 @@
   LayoutUnit cross_axis_offset_;
   LayoutUnit cross_axis_extent_;
 
-  LayoutUnit max_major_ascent_;
-  LayoutUnit max_minor_ascent_;
+  LayoutUnit max_major_ascent_ = LayoutUnit::Min();
+  LayoutUnit max_minor_ascent_ = LayoutUnit::Min();
 };
 
 // This class implements the CSS Flexbox layout algorithm:
diff --git a/third_party/blink/renderer/core/layout/geometry/transform_state.cc b/third_party/blink/renderer/core/layout/geometry/transform_state.cc
index 2f498016..6dbd142 100644
--- a/third_party/blink/renderer/core/layout/geometry/transform_state.cc
+++ b/third_party/blink/renderer/core/layout/geometry/transform_state.cc
@@ -127,7 +127,7 @@
       accumulated_transform_ = std::make_unique<TransformationMatrix>(
           transform_from_container * *accumulated_transform_);
     else
-      accumulated_transform_->Multiply(transform_from_container);
+      accumulated_transform_->PreConcat(transform_from_container);
   } else if (accumulate == kAccumulateTransform) {
     // Make one if we started to accumulate
     accumulated_transform_ =
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc
index a8de2e7..27f1998 100644
--- a/third_party/blink/renderer/core/layout/layout_box.cc
+++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -2043,7 +2043,7 @@
   // a) Transform.
   TransformationMatrix transform;
   if (Layer() && Layer()->Transform())
-    transform.Multiply(Layer()->CurrentTransform());
+    transform.PreConcat(Layer()->CurrentTransform());
 
   // b) Container offset.
   transform.PostTranslate(container_offset.left.ToFloat(),
diff --git a/third_party/blink/renderer/core/layout/layout_image.h b/third_party/blink/renderer/core/layout/layout_image.h
index 7193ab8..cc21951 100644
--- a/third_party/blink/renderer/core/layout/layout_image.h
+++ b/third_party/blink/renderer/core/layout/layout_image.h
@@ -176,11 +176,11 @@
   // and thus is stored in ComputedStyle (see ContentData::image) that gets
   // propagated to the anonymous LayoutImage in LayoutObject::createObject.
   Member<LayoutImageResource> image_resource_;
+  float image_device_pixel_ratio_ = 1.0f;
   bool did_increment_visually_non_empty_pixel_count_ = false;
 
   // This field stores whether this image is generated with 'content'.
   bool is_generated_content_ = false;
-  float image_device_pixel_ratio_ = 1.0f;
 
   bool image_ad_use_counter_recorded_ = false;
 };
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc
index c5204f4..ace9bf4e 100644
--- a/third_party/blink/renderer/core/layout/layout_object.cc
+++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -3393,7 +3393,7 @@
   PaintLayer* layer =
       HasLayer() ? To<LayoutBoxModelObject>(this)->Layer() : nullptr;
   if (layer && layer->Transform())
-    transform.Multiply(layer->CurrentTransform());
+    transform.PreConcat(layer->CurrentTransform());
 
   transform.PostTranslate(offset_in_container.left.ToFloat(),
                           offset_in_container.top.ToFloat());
diff --git a/third_party/blink/renderer/core/layout/ng/custom/ng_custom_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/custom/ng_custom_layout_algorithm.cc
index 8b2b76f..0ac6fe53 100644
--- a/third_party/blink/renderer/core/layout/ng/custom/ng_custom_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/custom/ng_custom_layout_algorithm.cc
@@ -87,6 +87,8 @@
   ScriptForbiddenScope::AllowUserAgentScript allow_script;
   CustomLayoutScope scope;
 
+  // TODO(ikilpatrick): Scale inputs/outputs by effective-zoom.
+  const float effective_zoom = Style().EffectiveZoom();
   const AtomicString& name = Style().DisplayLayoutCustomName();
   const Document& document = Node().GetDocument();
   LayoutWorklet* worklet = LayoutWorklet::From(*document.domWindow());
@@ -171,8 +173,8 @@
   // TODO(ikilpatrick): Allow setting both the first/last baseline instead of a
   // general baseline.
   if (fragment_result_options->hasBaseline()) {
-    LayoutUnit baseline =
-        LayoutUnit::FromDoubleRound(fragment_result_options->baseline());
+    LayoutUnit baseline = LayoutUnit::FromDoubleRound(
+        effective_zoom * fragment_result_options->baseline());
     container_builder_.SetBaselines(baseline);
   }
 
diff --git a/third_party/blink/renderer/core/layout/ng/flex/ng_flex_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/flex/ng_flex_layout_algorithm.cc
index ee15609f..fc0d2fb 100644
--- a/third_party/blink/renderer/core/layout/ng/flex/ng_flex_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/flex/ng_flex_layout_algorithm.cc
@@ -45,6 +45,81 @@
 
 namespace {
 
+class BaselineAccumulator {
+  STACK_ALLOCATED();
+
+ public:
+  explicit BaselineAccumulator(const ComputedStyle& style)
+      : font_baseline_(style.GetFontBaseline()) {}
+
+  void AccumulateItem(const NGBoxFragment& fragment,
+                      const LayoutUnit block_offset,
+                      bool is_first_line,
+                      bool is_last_line) {
+    if (is_first_line) {
+      if (!first_fallback_baseline_) {
+        first_fallback_baseline_ =
+            block_offset + fragment.FirstBaselineOrSynthesize(font_baseline_);
+      }
+    }
+
+    if (is_last_line) {
+      last_fallback_baseline_ =
+          block_offset + fragment.LastBaselineOrSynthesize(font_baseline_);
+    }
+  }
+
+  void AccumulateLine(const NGFlexLine& line,
+                      bool is_first_line,
+                      bool is_last_line) {
+    if (is_first_line) {
+      if (line.major_baseline != LayoutUnit::Min()) {
+        first_major_baseline_ = line.cross_axis_offset + line.major_baseline;
+      }
+      if (line.minor_baseline != LayoutUnit::Min()) {
+        first_minor_baseline_ =
+            line.cross_axis_offset + line.line_cross_size - line.minor_baseline;
+      }
+    }
+
+    if (is_last_line) {
+      if (line.major_baseline != LayoutUnit::Min()) {
+        last_major_baseline_ = line.cross_axis_offset + line.major_baseline;
+      }
+      if (line.minor_baseline != LayoutUnit::Min()) {
+        last_minor_baseline_ =
+            line.cross_axis_offset + line.line_cross_size - line.minor_baseline;
+      }
+    }
+  }
+
+  absl::optional<LayoutUnit> FirstBaseline() const {
+    if (first_major_baseline_)
+      return *first_major_baseline_;
+    if (first_minor_baseline_)
+      return *first_minor_baseline_;
+    return first_fallback_baseline_;
+  }
+  absl::optional<LayoutUnit> LastBaseline() const {
+    if (last_minor_baseline_)
+      return *last_minor_baseline_;
+    if (last_major_baseline_)
+      return *last_major_baseline_;
+    return last_fallback_baseline_;
+  }
+
+ private:
+  FontBaseline font_baseline_;
+
+  absl::optional<LayoutUnit> first_major_baseline_;
+  absl::optional<LayoutUnit> first_minor_baseline_;
+  absl::optional<LayoutUnit> first_fallback_baseline_;
+
+  absl::optional<LayoutUnit> last_major_baseline_;
+  absl::optional<LayoutUnit> last_minor_baseline_;
+  absl::optional<LayoutUnit> last_fallback_baseline_;
+};
+
 bool ContainsNonWhitespace(const LayoutBox* box) {
   const LayoutObject* next = box;
   while ((next = next->NextInPreOrder(box))) {
@@ -1169,6 +1244,8 @@
                                    cross_axis_offset);
     flex_line_outputs->back().line_cross_size = line->cross_axis_extent_;
     flex_line_outputs->back().cross_axis_offset = line->cross_axis_offset_;
+    flex_line_outputs->back().major_baseline = line->max_major_ascent_;
+    flex_line_outputs->back().minor_baseline = line->max_minor_ascent_;
   }
 }
 
@@ -1223,7 +1300,9 @@
   if (Style().ResolvedIsColumnReverseFlexDirection()) {
     algorithm_.LayoutColumnReverse(final_content_main_size,
                                    BorderScrollbarPadding().block_start);
-
+  }
+  if (Style().ResolvedIsColumnReverseFlexDirection() ||
+      Style().ResolvedIsRowReverseFlexDirection()) {
     for (auto& flex_line : *flex_line_outputs)
       flex_line.line_items.Reverse();
   }
@@ -1262,12 +1341,20 @@
     }
   }
 
-  absl::optional<LayoutUnit> fallback_baseline;
+  BaselineAccumulator baseline_accumulator(Style());
   NGLayoutResult::EStatus status = NGLayoutResult::kSuccess;
-  bool is_wrap_reverse = Style().FlexWrap() == EFlexWrap::kWrapReverse;
+
   for (wtf_size_t flex_line_idx = 0; flex_line_idx < flex_line_outputs->size();
        ++flex_line_idx) {
     NGFlexLine& line_output = (*flex_line_outputs)[flex_line_idx];
+
+    bool is_first_line = flex_line_idx == 0;
+    bool is_last_line = flex_line_idx == flex_line_outputs->size() - 1;
+    if (!InvolvedInBlockFragmentation(container_builder_) && !is_column_) {
+      baseline_accumulator.AccumulateLine(line_output, is_first_line,
+                                          is_last_line);
+    }
+
     for (wtf_size_t flex_item_idx = 0;
          flex_item_idx < line_output.line_items.size(); ++flex_item_idx) {
       NGFlexItem& flex_item = line_output.line_items[flex_item_idx];
@@ -1338,14 +1425,8 @@
                              physical_fragment);
       if (!InvolvedInBlockFragmentation(container_builder_)) {
         container_builder_.AddResult(*layout_result, offset);
-
-        // Only propagate baselines from children on the first flex-line.
-        if ((!is_wrap_reverse && flex_line_idx == 0) ||
-            (is_wrap_reverse &&
-             flex_line_idx == flex_line_outputs->size() - 1)) {
-          PropagateBaselineFromChild(flex_item.Style(), fragment,
-                                     offset.block_offset, &fallback_baseline);
-        }
+        baseline_accumulator.AccumulateItem(fragment, offset.block_offset,
+                                            is_first_line, is_last_line);
       } else {
         flex_item.total_remaining_block_size = fragment.BlockSize();
       }
@@ -1358,11 +1439,10 @@
     }
   }
 
-  // Set the baseline to the fallback, if we didn't find any children with
-  // baseline alignment.
-  if (!InvolvedInBlockFragmentation(container_builder_) &&
-      !container_builder_.FirstBaseline() && fallback_baseline)
-    container_builder_.SetFirstBaseline(*fallback_baseline);
+  if (auto first_baseline = baseline_accumulator.FirstBaseline())
+    container_builder_.SetFirstBaseline(*first_baseline);
+  if (auto last_baseline = baseline_accumulator.LastBaseline())
+    container_builder_.SetLastBaseline(*last_baseline);
 
   // TODO(crbug.com/1131352): Avoid control-specific handling.
   if (Node().IsButton()) {
@@ -1388,10 +1468,8 @@
   DCHECK(row_break_between_outputs);
   DCHECK(broke_before_row);
 
-  absl::optional<LayoutUnit> fallback_baseline;
   NGFlexItemIterator item_iterator(*flex_line_outputs, BreakToken(),
                                    is_column_);
-  bool is_wrap_reverse = Style().FlexWrap() == EFlexWrap::kWrapReverse;
 
   Vector<bool> has_inflow_child_break_inside_line(flex_line_outputs->size(),
                                                   false);
@@ -1410,6 +1488,7 @@
   if (BreakToken())
     previously_consumed_block_size = BreakToken()->ConsumedBlockSize();
 
+  BaselineAccumulator baseline_accumulator(Style());
   for (auto entry = item_iterator.NextItem(*broke_before_row);
        NGFlexItem* flex_item = entry.flex_item;
        entry = item_iterator.NextItem(*broke_before_row)) {
@@ -1418,6 +1497,8 @@
     NGFlexLine& line_output = (*flex_line_outputs)[flex_line_idx];
     const auto* item_break_token = To<NGBlockBreakToken>(entry.token);
     bool last_item_in_line = flex_item_idx == line_output.line_items.size() - 1;
+
+    bool is_first_line = flex_line_idx == 0;
     bool is_last_line = flex_line_idx == flex_line_outputs->size() - 1;
 
     // A child break in a parallel flow doesn't affect whether we should
@@ -1759,13 +1840,8 @@
                                  current_column_break_info
                                      ? &current_column_break_info->break_after
                                      : nullptr);
-
-    // Only propagate baselines from children on the first flex-line.
-    if ((!is_wrap_reverse && flex_line_idx == 0) ||
-        (is_wrap_reverse && is_last_line)) {
-      PropagateBaselineFromChild(flex_item->Style(), fragment,
-                                 offset.block_offset, &fallback_baseline);
-    }
+    baseline_accumulator.AccumulateItem(fragment, offset.block_offset,
+                                        is_first_line, is_last_line);
     if (last_item_in_line) {
       if (!has_inflow_child_break_inside_line[flex_line_idx])
         line_output.has_seen_all_children = true;
@@ -1802,10 +1878,10 @@
     container_builder_.SetHasSeenAllChildren();
   }
 
-  // Set the baseline to the fallback, if we didn't find any children with
-  // baseline alignment.
-  if (!container_builder_.FirstBaseline() && fallback_baseline)
-    container_builder_.SetFirstBaseline(*fallback_baseline);
+  if (auto first_baseline = baseline_accumulator.FirstBaseline())
+    container_builder_.SetFirstBaseline(*first_baseline);
+  if (auto last_baseline = baseline_accumulator.LastBaseline())
+    container_builder_.SetLastBaseline(*last_baseline);
 
   // Update the |total_intrinsic_block_size_| in case things expanded.
   total_intrinsic_block_size_ =
@@ -1928,36 +2004,6 @@
   }
 }
 
-void NGFlexLayoutAlgorithm::PropagateBaselineFromChild(
-    const ComputedStyle& flex_item_style,
-    const NGBoxFragment& fragment,
-    LayoutUnit block_offset,
-    absl::optional<LayoutUnit>* fallback_baseline) {
-  // Check if we've already found an appropriate baseline.
-  if (container_builder_.FirstBaseline())
-    return;
-
-  const auto baseline_type = Style().GetFontBaseline();
-  const LayoutUnit baseline_offset =
-      block_offset + fragment.FirstBaselineOrSynthesize(baseline_type);
-
-  // We prefer a baseline from a child with baseline alignment, and no
-  // auto-margins in the cross axis (even if we have to synthesize the
-  // baseline).
-  if (FlexLayoutAlgorithm::AlignmentForChild(Style(), flex_item_style) ==
-          ItemPosition::kBaseline &&
-      !is_column_) {
-    container_builder_.SetFirstBaseline(baseline_offset);
-    return;
-  }
-
-  // Set the fallback baseline if it doesn't have a value yet.
-  if (Style().ResolvedIsColumnReverseFlexDirection())
-    *fallback_baseline = baseline_offset;
-  else
-    *fallback_baseline = fallback_baseline->value_or(baseline_offset);
-}
-
 MinMaxSizesResult NGFlexLayoutAlgorithm::ComputeItemContributions(
     const NGConstraintSpace& space,
     const FlexItem& item) const {
@@ -2629,7 +2675,8 @@
   if (Style().FlexWrap() == EFlexWrap::kWrapReverse)
     flex_line_outputs.Reverse();
 
-  if (Style().ResolvedIsColumnReverseFlexDirection()) {
+  if (Style().ResolvedIsColumnReverseFlexDirection() ||
+      Style().ResolvedIsRowReverseFlexDirection()) {
     for (auto& flex_line : flex_line_outputs)
       flex_line.line_items.Reverse();
   }
diff --git a/third_party/blink/renderer/core/layout/ng/flex/ng_flex_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/flex/ng_flex_layout_algorithm.h
index af6f06d..cd5021e 100644
--- a/third_party/blink/renderer/core/layout/ng/flex/ng_flex_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/flex/ng_flex_layout_algorithm.h
@@ -15,7 +15,6 @@
 
 class NGBlockNode;
 class NGBlockBreakToken;
-class NGBoxFragment;
 struct DevtoolsFlexInfo;
 struct NGFlexItem;
 
@@ -106,13 +105,6 @@
 
   void AdjustButtonBaseline(LayoutUnit final_content_cross_size);
 
-  // Propagates the baseline from the given flex-item if needed.
-  void PropagateBaselineFromChild(
-      const ComputedStyle&,
-      const NGBoxFragment&,
-      LayoutUnit block_offset,
-      absl::optional<LayoutUnit>* fallback_baseline);
-
   MinMaxSizesResult ComputeMinMaxSizeOfRowContainer();
   MinMaxSizesResult ComputeMinMaxSizeOfMultilineColumnContainer();
   // This implements 9.9.3. Flex Item Intrinsic Size Contributions, from
diff --git a/third_party/blink/renderer/core/layout/ng/flex/ng_flex_line.h b/third_party/blink/renderer/core/layout/ng/flex/ng_flex_line.h
index a663c48e..6e2034d 100644
--- a/third_party/blink/renderer/core/layout/ng/flex/ng_flex_line.h
+++ b/third_party/blink/renderer/core/layout/ng/flex/ng_flex_line.h
@@ -47,6 +47,8 @@
 
   LayoutUnit line_cross_size;
   LayoutUnit cross_axis_offset;
+  LayoutUnit major_baseline;
+  LayoutUnit minor_baseline;
   LayoutUnit item_offset_adjustment;
   bool has_seen_all_children = false;
   HeapVector<NGFlexItem> line_items;
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
index e243fc3..7770ba7 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
@@ -23,7 +23,6 @@
 namespace {
 
 struct SameSizeAsNGFragmentItem {
-  Member<void*> member;
   union {
     NGFragmentItem::TextItem text_;
     NGFragmentItem::SvgTextItem svg_text_;
@@ -33,6 +32,7 @@
   };
   PhysicalRect rect;
   NGInkOverflow ink_overflow;
+  Member<void*> member;
   wtf_size_t sizes[2];
   unsigned flags;
 };
@@ -47,9 +47,9 @@
     const NGTextOffset& text_offset,
     const PhysicalSize& size,
     bool is_hidden_for_paint)
-    : layout_object_(inline_item.GetLayoutObject()),
-      text_({std::move(shape_result), text_offset}),
+    : text_({std::move(shape_result), text_offset}),
       rect_({PhysicalOffset(), size}),
+      layout_object_(inline_item.GetLayoutObject()),
       const_traced_type_(kNone),
       type_(kText),
       sub_type_(static_cast<unsigned>(inline_item.TextType())),
@@ -78,9 +78,9 @@
     const String& text_content,
     const PhysicalSize& size,
     bool is_hidden_for_paint)
-    : layout_object_(&layout_object),
-      generated_text_({std::move(shape_result), text_content}),
+    : generated_text_({std::move(shape_result), text_content}),
       rect_({PhysicalOffset(), size}),
+      layout_object_(&layout_object),
       const_traced_type_(kNone),
       type_(kGeneratedText),
       sub_type_(static_cast<unsigned>(text_type)),
@@ -112,9 +112,9 @@
                      is_hidden_for_paint) {}
 
 NGFragmentItem::NGFragmentItem(const NGPhysicalLineBoxFragment& line)
-    : layout_object_(line.ContainerLayoutObject()),
-      line_({&line, /* descendants_count */ 1}),
+    : line_({&line, /* descendants_count */ 1}),
       rect_({PhysicalOffset(), line.Size()}),
+      layout_object_(line.ContainerLayoutObject()),
       const_traced_type_(kLineItem),
       type_(kLine),
       sub_type_(static_cast<unsigned>(line.LineBoxType())),
@@ -129,9 +129,9 @@
 
 NGFragmentItem::NGFragmentItem(const NGPhysicalBoxFragment& box,
                                TextDirection resolved_direction)
-    : layout_object_(box.GetLayoutObject()),
-      box_(&box, /* descendants_count */ 1),
+    : box_(&box, /* descendants_count */ 1),
       rect_({PhysicalOffset(), box.Size()}),
+      layout_object_(box.GetLayoutObject()),
       const_traced_type_(kBoxItem),
       type_(kBox),
       style_variant_(static_cast<unsigned>(box.StyleVariant())),
@@ -192,8 +192,8 @@
 }
 
 NGFragmentItem::NGFragmentItem(const NGFragmentItem& source)
-    : layout_object_(source.layout_object_),
-      rect_(source.rect_),
+    : rect_(source.rect_),
+      layout_object_(source.layout_object_),
       fragment_id_(source.fragment_id_),
       delta_to_next_for_same_layout_object_(
           source.delta_to_next_for_same_layout_object_),
@@ -234,9 +234,9 @@
 }
 
 NGFragmentItem::NGFragmentItem(NGFragmentItem&& source)
-    : layout_object_(source.layout_object_),
-      rect_(source.rect_),
+    : rect_(source.rect_),
       ink_overflow_(source.InkOverflowType(), std::move(source.ink_overflow_)),
+      layout_object_(source.layout_object_),
       fragment_id_(source.fragment_id_),
       delta_to_next_for_same_layout_object_(
           source.delta_to_next_for_same_layout_object_),
@@ -635,7 +635,7 @@
   AffineTransform transform = BuildSvgTransformForBoundingBox();
   AffineTransform length_adjust = BuildSvgTransformForLengthAdjust();
   if (!length_adjust.IsIdentity())
-    transform.PreMultiply(length_adjust);
+    transform.PostConcat(length_adjust);
   return transform;
 }
 
@@ -691,7 +691,7 @@
     x += font_data->GetFontMetrics().FixedDescent(font_baseline);
     transform.Translate(svg_data.baseline_shift, -svg_data.rect.height() / 2);
   }
-  transform.Multiply(length_adjust);
+  transform.PreConcat(length_adjust);
   transform.SetE(transform.E() + x);
   transform.SetF(transform.F() + y);
   transform.Translate(-x, -y);
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
index e83208c..4a84431 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
@@ -582,8 +582,6 @@
       const AffineTransform& length_adjust) const;
   AffineTransform BuildSvgTransformForLengthAdjust() const;
 
-  Member<const LayoutObject> layout_object_;
-
   // TODO(kojii): We can make them sub-classes if we need to make the vector of
   // pointers. Sub-classing from DisplayItemClient prohibits copying and that we
   // cannot create a vector of this class.
@@ -600,6 +598,8 @@
 
   NGInkOverflow ink_overflow_;
 
+  Member<const LayoutObject> layout_object_;
+
   mutable wtf_size_t fragment_id_ = 0;
 
   // Item index delta to the next item for the same |LayoutObject|.
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_logical_line_item.h b/third_party/blink/renderer/core/layout/ng/inline/ng_logical_line_item.h
index 8a71ffa..89e8598 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_logical_line_item.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_logical_line_item.h
@@ -203,8 +203,6 @@
 
   void Trace(Visitor*) const;
 
-  Member<const NGLayoutResult> layout_result;
-
   // Data to create a text fragment from.
   // |inline_item| is null only for ellipsis items.
   const NGInlineItem* inline_item = nullptr;
@@ -214,6 +212,8 @@
   // Data to create a generated text fragment.
   String text_content;
 
+  Member<const NGLayoutResult> layout_result;
+
   // Ellipsis does not have |NGInlineItem|, but built from |LayoutObject| and
   // |NGStyleVariant|.
   Member<const LayoutObject> layout_object;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_result.h b/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
index 5b88a08..117449b 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
@@ -700,9 +700,9 @@
       SetBfcBlockOffset(bfc_block_offset);
     }
     RareData(const RareData& rare_data)
-        : bfc_line_offset(rare_data.bfc_line_offset),
-          start_page_name(rare_data.start_page_name),
+        : start_page_name(rare_data.start_page_name),
           end_page_name(rare_data.end_page_name),
+          bfc_line_offset(rare_data.bfc_line_offset),
           early_break(rare_data.early_break),
           oof_positioned_offset(rare_data.oof_positioned_offset),
           end_margin_strut(rare_data.end_margin_strut),
@@ -796,11 +796,11 @@
 
     void Trace(Visitor* visitor) const;
 
-    LayoutUnit bfc_line_offset;
-
     AtomicString start_page_name;
     AtomicString end_page_name;
 
+    LayoutUnit bfc_line_offset;
+
     Member<const NGEarlyBreak> early_break;
     LogicalOffset oof_positioned_offset;
     NGMarginStrut end_margin_strut;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
index 4ba0319c..608c4d9 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h
@@ -225,6 +225,13 @@
   // inside the fieldset except the rendered legend).
   bool IsFieldsetContainer() const { return is_fieldset_container_; }
 
+  // Return true if this is the layout root fragment for pagination
+  // (aka. printing).
+  bool IsPaginatedRoot() const {
+    return layout_object_->IsLayoutView() && IsCSSBox() &&
+           GetDocument().Printing();
+  }
+
   // Returns whether the fragment is legacy layout root.
   bool IsLegacyLayoutRoot() const { return is_legacy_layout_root_; }
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_simplified_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_simplified_layout_algorithm.cc
index 5052161..8ab3179 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_simplified_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_simplified_layout_algorithm.cc
@@ -316,7 +316,7 @@
   // baseline if it is from the logical bottom margin edge.
   DCHECK_EQ(previous_fragment.LastBaseline().has_value(),
             container_builder_.LastBaseline().has_value());
-  if (container_builder_.LastBaseline())
+  if (Node().IsBlockFlow() && container_builder_.LastBaseline())
     container_builder_.SetLastBaselineToBlockEndMarginEdgeIfNeeded();
 
   return container_builder_.ToBoxFragment();
diff --git a/third_party/blink/renderer/core/layout/scroll_anchor.h b/third_party/blink/renderer/core/layout/scroll_anchor.h
index 62ce73e6..c394319 100644
--- a/third_party/blink/renderer/core/layout/scroll_anchor.h
+++ b/third_party/blink/renderer/core/layout/scroll_anchor.h
@@ -154,6 +154,10 @@
 
   gfx::Vector2d ComputeAdjustment() const;
 
+  // Previously calculated css selector that uniquely locates the current
+  // anchor_object_. Cleared when the anchor_object_ is cleared.
+  String saved_selector_;
+
   // The scroller to be adjusted by this ScrollAnchor. This is also the scroller
   // that owns us, unless it is the RootFrameViewport in which case we are owned
   // by the layout viewport.
@@ -171,10 +175,6 @@
   // (vertical-rl).
   LayoutPoint saved_relative_offset_;
 
-  // Previously calculated css selector that uniquely locates the current
-  // anchor_object_. Cleared when the anchor_object_ is cleared.
-  String saved_selector_;
-
   // We suppress scroll anchoring after a style change on the anchor node or
   // one of its ancestors, if that change might have caused the node to move.
   // This bit tracks whether we have had a scroll-anchor-disabling style
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.cc
index 32f282d..3f2b68c 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.cc
@@ -170,7 +170,7 @@
 
   // Compute pattern space transformation.
   pattern_data->transform.Translate(tile_bounds.x(), tile_bounds.y());
-  pattern_data->transform.PreMultiply(attributes.PatternTransform());
+  pattern_data->transform.PostConcat(attributes.PatternTransform());
 
   return pattern_data;
 }
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
index c2c705e..f68751b 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
@@ -501,7 +501,7 @@
       scale, 0, 0, scale, border_and_padding.Width() + translate.x(),
       border_and_padding.Height() + translate.y());
   view_to_border_box_transform.Scale(svg->currentScale());
-  local_to_border_box_transform_.PreMultiply(view_to_border_box_transform);
+  local_to_border_box_transform_.PostConcat(view_to_border_box_transform);
   return change_detector.ComputeChange(local_to_border_box_transform_);
 }
 
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
index 27c0e5a..2b4457f1 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
@@ -211,7 +211,7 @@
       // Un-scale to get back to the root-transform (cheaper than re-computing
       // the root transform from scratch).
       root_transform.Scale(StyleRef().EffectiveZoom())
-          .Multiply(NonScalingStrokeTransform());
+          .PreConcat(NonScalingStrokeTransform());
 
       path = &NonScalingStrokePath();
     } else {
@@ -359,7 +359,7 @@
   // better to apply this effect during rasterization?
   AffineTransform host_transform;
   host_transform.Scale(1 / StyleRef().EffectiveZoom())
-      .Multiply(ComputeRootTransform());
+      .PreConcat(ComputeRootTransform());
 
   // Width of non-scaling stroke is independent of translation, so zero it out
   // here.
diff --git a/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc b/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
index 7e42bd5..7ee8c4c 100644
--- a/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
+++ b/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
@@ -114,11 +114,11 @@
   for (; !parent->IsSVGRoot(); parent = parent->Parent()) {
     if (filter_skipped && parent->StyleRef().HasFilter())
       *filter_skipped = true;
-    root_border_box_transform.PreMultiply(parent->LocalToSVGParentTransform());
+    root_border_box_transform.PostConcat(parent->LocalToSVGParentTransform());
   }
 
   const auto& svg_root = To<LayoutSVGRoot>(*parent);
-  root_border_box_transform.PreMultiply(svg_root.LocalToBorderBoxTransform());
+  root_border_box_transform.PostConcat(svg_root.LocalToBorderBoxTransform());
   return svg_root;
 }
 
@@ -380,7 +380,7 @@
 SubtreeContentTransformScope::SubtreeContentTransformScope(
     const AffineTransform& subtree_content_transformation)
     : saved_content_transformation_(current_content_transformation_) {
-  current_content_transformation_.PreMultiply(subtree_content_transformation);
+  current_content_transformation_.PostConcat(subtree_content_transformation);
 }
 
 SubtreeContentTransformScope::~SubtreeContentTransformScope() {
diff --git a/third_party/blink/renderer/core/layout/svg/svg_text_fragment.h b/third_party/blink/renderer/core/layout/svg/svg_text_fragment.h
index b764c9b..5d6e19ac 100644
--- a/third_party/blink/renderer/core/layout/svg/svg_text_fragment.h
+++ b/third_party/blink/renderer/core/layout/svg/svg_text_fragment.h
@@ -163,7 +163,7 @@
 
     AffineTransform result = transform;
     TransformAroundOrigin(result);
-    result.PreMultiply(LengthAdjustTransform());
+    result.PostConcat(LengthAdjustTransform());
     return result;
   }
 };
diff --git a/third_party/blink/renderer/core/loader/document_load_timing.cc b/third_party/blink/renderer/core/loader/document_load_timing.cc
index f69f1cc..930a0cc 100644
--- a/third_party/blink/renderer/core/loader/document_load_timing.cc
+++ b/third_party/blink/renderer/core/loader/document_load_timing.cc
@@ -41,12 +41,12 @@
     : user_timing_mark_fully_loaded_(absl::nullopt),
       user_timing_mark_fully_visible_(absl::nullopt),
       user_timing_mark_interactive_(absl::nullopt),
-      redirect_count_(0),
-      has_cross_origin_redirect_(false),
-      can_request_from_previous_document_(false),
       clock_(base::DefaultClock::GetInstance()),
       tick_clock_(base::DefaultTickClock::GetInstance()),
-      document_loader_(document_loader) {}
+      document_loader_(document_loader),
+      redirect_count_(0),
+      has_cross_origin_redirect_(false),
+      can_request_from_previous_document_(false) {}
 
 void DocumentLoadTiming::Trace(Visitor* visitor) const {
   visitor->Trace(document_loader_);
diff --git a/third_party/blink/renderer/core/loader/document_load_timing.h b/third_party/blink/renderer/core/loader/document_load_timing.h
index 614891d..ae8dd35 100644
--- a/third_party/blink/renderer/core/loader/document_load_timing.h
+++ b/third_party/blink/renderer/core/loader/document_load_timing.h
@@ -152,19 +152,20 @@
   base::TimeTicks unload_event_end_;
   base::TimeTicks redirect_start_;
   base::TimeTicks redirect_end_;
-  uint16_t redirect_count_;
   base::TimeTicks fetch_start_;
   base::TimeTicks response_end_;
   base::TimeTicks load_event_start_;
   base::TimeTicks load_event_end_;
   base::TimeTicks activation_start_;
-  bool has_cross_origin_redirect_;
-  bool can_request_from_previous_document_;
 
   const base::Clock* clock_;
   const base::TickClock* tick_clock_;
 
   Member<DocumentLoader> document_loader_;
+
+  uint16_t redirect_count_ = 0;
+  bool has_cross_origin_redirect_ = false;
+  bool can_request_from_previous_document_ = false;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/loader/frame_loader.h b/third_party/blink/renderer/core/loader/frame_loader.h
index 71d73b21..a97d6c4 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.h
+++ b/third_party/blink/renderer/core/loader/frame_loader.h
@@ -298,13 +298,6 @@
 
   String ApplyUserAgentOverrideAndLog(const String& user_agent) const;
 
-  Member<LocalFrame> frame_;
-
-  Member<ProgressTracker> progress_tracker_;
-
-  // Document loader for frame loading.
-  Member<DocumentLoader> document_loader_;
-
   // This struct holds information about a navigation, which is being
   // initiated by the client through the browser process, until the navigation
   // is either committed or cancelled.
@@ -313,6 +306,13 @@
   };
   std::unique_ptr<ClientNavigationState> client_navigation_;
 
+  Member<LocalFrame> frame_;
+
+  Member<ProgressTracker> progress_tracker_;
+
+  // Document loader for frame loading.
+  Member<DocumentLoader> document_loader_;
+
   // The state is set to kInitialized when Init() completes, and kDetached
   // during teardown in Detach().
   enum class State { kUninitialized, kInitialized, kDetached };
diff --git a/third_party/blink/renderer/core/loader/render_blocking_resource_manager.h b/third_party/blink/renderer/core/loader/render_blocking_resource_manager.h
index 0120c53..4c07ae9 100644
--- a/third_party/blink/renderer/core/loader/render_blocking_resource_manager.h
+++ b/third_party/blink/renderer/core/loader/render_blocking_resource_manager.h
@@ -73,8 +73,6 @@
   void DisableFontPreloadTimeoutForTest();
   bool FontPreloadTimerIsActiveForTest() const;
 
-  Member<Document> document_;
-
   // Tracks the currently loading top-level stylesheets which block
   // rendering from starting. Sheets loaded using the @import directive are not
   // directly included in this set. See:
@@ -90,6 +88,8 @@
   HeapHashMap<WeakMember<const PendingLinkPreload>, PreloadType>
       pending_preloads_;
 
+  Member<Document> document_;
+
   unsigned imperative_font_loading_count_ = 0;
 
   HeapTaskRunnerTimer<RenderBlockingResourceManager> font_preload_timer_;
diff --git a/third_party/blink/renderer/core/loader/resource/image_resource.h b/third_party/blink/renderer/core/loader/resource/image_resource.h
index 2ce39712..a76ef3e 100644
--- a/third_party/blink/renderer/core/loader/resource/image_resource.h
+++ b/third_party/blink/renderer/core/loader/resource/image_resource.h
@@ -135,11 +135,11 @@
   Member<ImageResourceContent> content_;
 
   Member<MultipartImageResourceParser> multipart_parser_;
+  base::TimeTicks last_flush_time_;
+
   MultipartParsingState multipart_parsing_state_ =
       MultipartParsingState::kWaitingForFirstPart;
 
-  base::TimeTicks last_flush_time_;
-
   bool is_during_finish_as_error_ = false;
 
   bool is_referenced_from_ua_stylesheet_ = false;
diff --git a/third_party/blink/renderer/core/loader/resource_load_observer_for_frame.cc b/third_party/blink/renderer/core/loader/resource_load_observer_for_frame.cc
index 293e8da..ffe7363a 100644
--- a/third_party/blink/renderer/core/loader/resource_load_observer_for_frame.cc
+++ b/third_party/blink/renderer/core/loader/resource_load_observer_for_frame.cc
@@ -106,12 +106,12 @@
     DocumentLoader& loader,
     Document& document,
     const ResourceFetcherProperties& fetcher_properties)
-    : document_loader_(loader),
-      document_(document),
-      fetcher_properties_(fetcher_properties),
-      power_mode_voter_(
+    : power_mode_voter_(
           power_scheduler::PowerModeArbiter::GetInstance()->NewVoter(
-              "PowerModeVoter.ResourceLoads")) {}
+              "PowerModeVoter.ResourceLoads")),
+      document_loader_(loader),
+      document_(document),
+      fetcher_properties_(fetcher_properties) {}
 ResourceLoadObserverForFrame::~ResourceLoadObserverForFrame() = default;
 
 void ResourceLoadObserverForFrame::DidStartRequest(
diff --git a/third_party/blink/renderer/core/loader/resource_load_observer_for_frame.h b/third_party/blink/renderer/core/loader/resource_load_observer_for_frame.h
index 7f1fd01..4bdee0b 100644
--- a/third_party/blink/renderer/core/loader/resource_load_observer_for_frame.h
+++ b/third_party/blink/renderer/core/loader/resource_load_observer_for_frame.h
@@ -70,13 +70,14 @@
 
   void UpdatePowerModeVote();
 
+  std::unique_ptr<power_scheduler::PowerModeVoter> power_mode_voter_;
+
   // There are some overlap between |document_loader_|, |document_| and
   // |fetcher_properties_|. Use |fetcher_properties_| whenever possible.
   const Member<DocumentLoader> document_loader_;
   const Member<Document> document_;
   const Member<const ResourceFetcherProperties> fetcher_properties_;
 
-  std::unique_ptr<power_scheduler::PowerModeVoter> power_mode_voter_;
   bool power_mode_vote_is_loading_ = false;
 };
 
diff --git a/third_party/blink/renderer/core/loader/threadable_loader.cc b/third_party/blink/renderer/core/loader/threadable_loader.cc
index 6e8bb0ca..b0377b28 100644
--- a/third_party/blink/renderer/core/loader/threadable_loader.cc
+++ b/third_party/blink/renderer/core/loader/threadable_loader.cc
@@ -97,10 +97,10 @@
     ThreadableLoaderClient* client,
     const ResourceLoaderOptions& resource_loader_options,
     ResourceFetcher* resource_fetcher)
-    : client_(client),
+    : resource_loader_options_(resource_loader_options),
+      client_(client),
       execution_context_(execution_context),
       resource_fetcher_(resource_fetcher),
-      resource_loader_options_(resource_loader_options),
       request_mode_(network::mojom::RequestMode::kSameOrigin),
       timeout_timer_(execution_context_->GetTaskRunner(TaskType::kNetworking),
                      this,
@@ -166,7 +166,7 @@
   }
 }
 
-ThreadableLoader::~ThreadableLoader() {}
+ThreadableLoader::~ThreadableLoader() = default;
 
 void ThreadableLoader::SetTimeout(const base::TimeDelta& timeout) {
   timeout_ = timeout;
diff --git a/third_party/blink/renderer/core/loader/threadable_loader.h b/third_party/blink/renderer/core/loader/threadable_loader.h
index 5cb89abc..8c77ed2 100644
--- a/third_party/blink/renderer/core/loader/threadable_loader.h
+++ b/third_party/blink/renderer/core/loader/threadable_loader.h
@@ -151,12 +151,12 @@
   void DataDownloaded(Resource*, uint64_t) override;
   void DidDownloadToBlob(Resource*, scoped_refptr<BlobDataHandle>) override;
 
+  const ResourceLoaderOptions resource_loader_options_;
+
   Member<ThreadableLoaderClient> client_;
   Member<ExecutionContext> execution_context_;
   Member<ResourceFetcher> resource_fetcher_;
 
-  const ResourceLoaderOptions resource_loader_options_;
-
   // Saved so that we can use the original mode in ResponseReceived() where
   // |resource| might be a reused one (e.g. preloaded resource) which can have a
   // different mode.
diff --git a/third_party/blink/renderer/core/paint/clip_path_clipper.cc b/third_party/blink/renderer/core/paint/clip_path_clipper.cc
index a01470ff..37b8108 100644
--- a/third_party/blink/renderer/core/paint/clip_path_clipper.cc
+++ b/third_party/blink/renderer/core/paint/clip_path_clipper.cc
@@ -200,7 +200,7 @@
     }
   }
 
-  mask_to_content.Multiply(
+  mask_to_content.PreConcat(
       resource_clipper.CalculateClipTransform(reference_box));
   return mask_to_content;
 }
diff --git a/third_party/blink/renderer/core/paint/fragment_data.h b/third_party/blink/renderer/core/paint/fragment_data.h
index f6a4dd5..8ee9aea25 100644
--- a/third_party/blink/renderer/core/paint/fragment_data.h
+++ b/third_party/blink/renderer/core/paint/fragment_data.h
@@ -221,13 +221,13 @@
 
     // Fragment specific data.
     PhysicalOffset legacy_pagination_offset;
-    wtf_size_t fragment_id = 0;
     std::unique_ptr<ObjectPaintProperties> paint_properties;
     std::unique_ptr<RefCountedPropertyTreeStateOrAlias>
         local_border_box_properties;
     CullRect cull_rect_;
     CullRect contents_cull_rect_;
     Member<FragmentData> next_fragment_;
+    wtf_size_t fragment_id = 0;
 
 #if DCHECK_IS_ON()
     // Legacy block fragmentation sets the flow thread offset for each
diff --git a/third_party/blink/renderer/core/paint/hit_testing_transform_state.cc b/third_party/blink/renderer/core/paint/hit_testing_transform_state.cc
index 3f1cb03..03052b1 100644
--- a/third_party/blink/renderer/core/paint/hit_testing_transform_state.cc
+++ b/third_party/blink/renderer/core/paint/hit_testing_transform_state.cc
@@ -39,7 +39,7 @@
   if (transform.IsIdentityOr2DTranslation()) {
     Translate(transform.Translation2D());
   } else {
-    accumulated_transform_.Multiply(transform.MatrixWithOriginApplied());
+    accumulated_transform_.PreConcat(transform.MatrixWithOriginApplied());
   }
 }
 
@@ -48,7 +48,7 @@
   if (transform.IsIdentityOr2DTranslation()) {
     Translate(transform.Translation2D());
   } else {
-    accumulated_transform_.Multiply(transform.Matrix());
+    accumulated_transform_.PreConcat(transform.Matrix());
   }
 }
 
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
index 587636f..5b7cb089 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
@@ -1726,15 +1726,15 @@
 
 bool NGBoxFragmentPainter::ShouldPaint(
     const ScopedPaintState& paint_state) const {
-  // TODO(layout-dev): Add support for scrolling, see BlockPainter::ShouldPaint.
-  const NGPhysicalBoxFragment& fragment = PhysicalFragment();
-  if (!fragment.IsInlineBox()) {
-    return paint_state.LocalRectIntersectsCullRect(
-        To<LayoutBox>(fragment.GetLayoutObject())
-            ->PhysicalVisualOverflowRect());
-  }
-  NOTREACHED();
-  return false;
+  DCHECK(!box_fragment_.IsInlineBox());
+  // When printing, the root fragment's background (i.e. the document's
+  // background) should extend onto every page, regardless of the overflow
+  // rectangle.
+  if (box_fragment_.IsPaginatedRoot())
+    return true;
+  const auto& box = *To<LayoutBox>(box_fragment_.GetLayoutObject());
+  return paint_state.LocalRectIntersectsCullRect(
+      box.PhysicalVisualOverflowRect());
 }
 
 void NGBoxFragmentPainter::PaintTextClipMask(const PaintInfo& paint_info,
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc
index da6ce02..403d518d 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc
@@ -364,7 +364,7 @@
       const auto fragment_transform = text_item.BuildSvgTransformForPaint();
       context.ConcatCTM(fragment_transform);
       DCHECK(fragment_transform.IsInvertible());
-      svg_state.EnsureShaderTransform().PreMultiply(
+      svg_state.EnsureShaderTransform().PostConcat(
           fragment_transform.Inverse());
     }
   }
@@ -379,7 +379,7 @@
     context.ConcatCTM(*rotation);
     if (NGTextPainter::SvgTextPaintState* state = text_painter.GetSvgState()) {
       DCHECK(rotation->IsInvertible());
-      state->EnsureShaderTransform().PreMultiply(rotation->Inverse());
+      state->EnsureShaderTransform().PostConcat(rotation->Inverse());
     }
   }
 
diff --git a/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h b/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
index 4fd1a93..3cdf8c27 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
@@ -137,14 +137,17 @@
   struct HighestLayers;
   void CollectLayers(PaintLayer&, HighestLayers*);
 
-  Member<PaintLayer> layer_;
-
   // Holds a sorted list of all the descendant nodes within that have z-indices
   // of 0 (or is treated as 0 for positioned objects) or greater.
   PaintLayers pos_z_order_list_;
   // Holds descendants within our stacking context with negative z-indices.
   PaintLayers neg_z_order_list_;
 
+  // All PaintLayers (just in current stacking context, child stacking contexts
+  // will have their own list) that have overlay overflow controls that should
+  // paint reordered. For the above example, this has one entry {target}.
+  PaintLayers overlay_overflow_controls_reordered_list_;
+
   // Overlay overflow controls(scrollbar or resizer) need to be painted above
   // all child contents, even if the contents are stacked in a stacking context
   // which is an ancestor of the scrolling or resizing layer, for example:
@@ -189,10 +192,7 @@
   HeapHashMap<Member<const PaintLayer>, Member<PaintLayers>>
       layer_to_overlay_overflow_controls_painting_after_;
 
-  // All PaintLayers (just in current stacking context, child stacking contexts
-  // will have their own list) that have overlay overflow controls that should
-  // paint reordered. For the above example, this has one entry {target}.
-  PaintLayers overlay_overflow_controls_reordered_list_;
+  Member<PaintLayer> layer_;
 
   // Indicates whether the z-order lists above are dirty.
   bool z_order_lists_dirty_ = true;
diff --git a/third_party/blink/renderer/core/paint/svg_inline_text_box_painter.cc b/third_party/blink/renderer/core/paint/svg_inline_text_box_painter.cc
index bffce4b..9ed46d85 100644
--- a/third_party/blink/renderer/core/paint/svg_inline_text_box_painter.cc
+++ b/third_party/blink/renderer/core/paint/svg_inline_text_box_painter.cc
@@ -453,7 +453,7 @@
     paint_server_transform->Scale(scaling_factor);
 
     if (shader_transform)
-      paint_server_transform->Multiply(*shader_transform);
+      paint_server_transform->PreConcat(*shader_transform);
   }
 
   if (!SVGObjectPainter(ParentInlineLayoutObject())
diff --git a/third_party/blink/renderer/core/paint/svg_root_painter.cc b/third_party/blink/renderer/core/paint/svg_root_painter.cc
index 71d1cefa..83cc039 100644
--- a/third_party/blink/renderer/core/paint/svg_root_painter.cc
+++ b/third_party/blink/renderer/core/paint/svg_root_painter.cc
@@ -32,7 +32,7 @@
         snapped_size.width() / size.Width().ToFloat(),
         snapped_size.height() / size.Height().ToFloat());
   }
-  paint_offset_to_border_box.Multiply(
+  paint_offset_to_border_box.PreConcat(
       layout_svg_root_.LocalToBorderBoxTransform());
   return paint_offset_to_border_box;
 }
diff --git a/third_party/blink/renderer/core/paint/text_paint_timing_detector.h b/third_party/blink/renderer/core/paint/text_paint_timing_detector.h
index 1e239e30..79c0f89 100644
--- a/third_party/blink/renderer/core/paint/text_paint_timing_detector.h
+++ b/third_party/blink/renderer/core/paint/text_paint_timing_detector.h
@@ -33,8 +33,8 @@
              const gfx::RectF& root_visual_rect,
              uint32_t frame_index)
       : node_(&node),
-        first_size(new_first_size),
         frame_index_(frame_index),
+        first_size(new_first_size),
         element_timing_rect_(element_timing_rect) {
     if (PaintTimingVisualizer::IsTracingEnabled()) {
       lcp_rect_info_ = std::make_unique<LCPRectInfo>(
@@ -47,8 +47,8 @@
   void Trace(Visitor*) const;
 
   WeakMember<Node> node_;
-  uint64_t first_size = 0;
   uint32_t frame_index_ = 0;
+  uint64_t first_size = 0;
   gfx::RectF element_timing_rect_;
   std::unique_ptr<LCPRectInfo> lcp_rect_info_;
   // The time of the first paint after fully loaded.
@@ -165,12 +165,6 @@
     added_entry_in_latest_frame_ = true;
   }
 
-  Member<PaintTimingCallbackManager> callback_manager_;
-  Member<const LocalFrameView> frame_view_;
-  // Set lazily because we may not have the correct Window when first
-  // initializing this class.
-  Member<TextElementTiming> text_element_timing_;
-
   // LayoutObjects for which text has been aggregated.
   HeapHashSet<Member<const LayoutObject>> recorded_set_;
 
@@ -179,6 +173,12 @@
   HeapHashMap<Member<const LayoutObject>, Member<TextRecord>>
       texts_queued_for_paint_time_;
 
+  Member<PaintTimingCallbackManager> callback_manager_;
+  Member<const LocalFrameView> frame_view_;
+  // Set lazily because we may not have the correct Window when first
+  // initializing this class.
+  Member<TextElementTiming> text_element_timing_;
+
   Member<LargestTextPaintManager> ltp_manager_;
   bool recording_largest_text_paint_ = true;
 
diff --git a/third_party/blink/renderer/core/script/classic_pending_script.h b/third_party/blink/renderer/core/script/classic_pending_script.h
index 7f61abe4..b16c5f20 100644
--- a/third_party/blink/renderer/core/script/classic_pending_script.h
+++ b/third_party/blink/renderer/core/script/classic_pending_script.h
@@ -83,7 +83,7 @@
 
  private:
   // See AdvanceReadyState implementation for valid state transitions.
-  enum ReadyState {
+  enum ReadyState : uint8_t {
     // These states are considered "not ready".
     kWaitingForResource,
     kWaitingForCacheConsumer,
@@ -124,14 +124,14 @@
   // This is a null string for external scripts and is not used.
   const String source_text_for_inline_script_;
 
+  Member<ClassicScript> classic_script_;
+
   const ScriptSourceLocationType source_location_type_;
   const bool is_external_;
   ReadyState ready_state_;
 
   // The request is intervened by document.write() intervention.
   bool intervened_ = false;
-
-  Member<ClassicScript> classic_script_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/script/script_loader.h b/third_party/blink/renderer/core/script/script_loader.h
index 98ecb67..9f4b640e 100644
--- a/third_party/blink/renderer/core/script/script_loader.h
+++ b/third_party/blink/renderer/core/script/script_loader.h
@@ -56,7 +56,7 @@
   // Script type at the time of #prepare-the-script-element. Import maps are
   // included here but not in `mojom::blink::ScriptType` because import maps are
   // handled differently from ordinal scripts after PrepareScript().
-  enum class ScriptTypeAtPrepare {
+  enum class ScriptTypeAtPrepare : uint8_t {
     kClassic,
     kModule,
     kImportMap,
@@ -130,13 +130,6 @@
 
   Member<ScriptElementBase> element_;
 
-  // https://html.spec.whatwg.org/C/#script-processing-model
-  // "A script element has several associated pieces of state.":
-
-  // <spec href="https://html.spec.whatwg.org/C/#already-started">... initially
-  // false.</spec>
-  bool already_started_ = false;
-
   // <spec href="https://html.spec.whatwg.org/C/#parser-document">... initially
   // null. It is set by the HTML parser and the XML parser on script elements
   // they insert, ...</spec>
@@ -146,6 +139,31 @@
   // need to keep the parser document alive.
   WeakMember<Document> parser_document_;
 
+  // A PendingScript is first created in PrepareScript() and stored in
+  // |prepared_pending_script_|.
+  // Later, TakePendingScript() is called, and its caller holds a reference
+  // to the PendingScript instead and |prepared_pending_script_| is cleared.
+  Member<PendingScript> prepared_pending_script_;
+
+  // This is used only to keep the ScriptResource of a classic script alive
+  // and thus to keep it on MemoryCache, even after script execution, as long
+  // as ScriptLoader is alive. crbug.com/778799
+  Member<Resource> resource_keep_alive_;
+
+  // This is created only for <script type=webbundle>, representing a webbundle
+  // mapping rule and its loader.
+  Member<ScriptWebBundle> script_web_bundle_;
+
+  // Speculation rule set registered by this script, if applicable.
+  Member<SpeculationRuleSet> speculation_rule_set_;
+
+  // https://html.spec.whatwg.org/C/#script-processing-model
+  // "A script element has several associated pieces of state.":
+
+  // <spec href="https://html.spec.whatwg.org/C/#already-started">... initially
+  // false.</spec>
+  bool already_started_ = false;
+
   // <spec href="https://html.spec.whatwg.org/C/#parser-inserted">... script
   // elements with non-null parser documents are known as
   // parser-inserted.</spec>
@@ -174,24 +192,6 @@
   // ... initially false. It is determined when the script is prepared, based on
   // the src attribute of the element at that time.</spec>
   bool is_external_script_ = false;
-
-  // A PendingScript is first created in PrepareScript() and stored in
-  // |prepared_pending_script_|.
-  // Later, TakePendingScript() is called, and its caller holds a reference
-  // to the PendingScript instead and |prepared_pending_script_| is cleared.
-  Member<PendingScript> prepared_pending_script_;
-
-  // This is used only to keep the ScriptResource of a classic script alive
-  // and thus to keep it on MemoryCache, even after script execution, as long
-  // as ScriptLoader is alive. crbug.com/778799
-  Member<Resource> resource_keep_alive_;
-
-  // This is created only for <script type=webbundle>, representing a webbundle
-  // mapping rule and its loader.
-  Member<ScriptWebBundle> script_web_bundle_;
-
-  // Speculation rule set registered by this script, if applicable.
-  Member<SpeculationRuleSet> speculation_rule_set_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/script/script_runner.h b/third_party/blink/renderer/core/script/script_runner.h
index d35ab71..ef80696 100644
--- a/third_party/blink/renderer/core/script/script_runner.h
+++ b/third_party/blink/renderer/core/script/script_runner.h
@@ -119,14 +119,15 @@
   void RemoveDelayReason(DelayReason);
   void RemoveDelayReasonFromScript(PendingScript*, DelayReason);
 
-  Member<Document> document_;
-
   // https://html.spec.whatwg.org/C/#list-of-scripts-that-will-execute-in-order-as-soon-as-possible
   HeapDeque<Member<PendingScript>> pending_in_order_scripts_;
   // https://html.spec.whatwg.org/C/#set-of-scripts-that-will-execute-as-soon-as-possible
   // The value represents the `DelayReason`s that the script is waiting for
   // before its evaluation.
   HeapHashMap<Member<PendingScript>, DelayReasons> pending_async_scripts_;
+
+  Member<Document> document_;
+
   // The number of async scripts that aren't yet evaluated. This is different
   // from pending_async_scripts_.size() == the number of async scripts that
   // aren't yet scheduled to evaluate.
diff --git a/third_party/blink/renderer/core/style/computed_style.cc b/third_party/blink/renderer/core/style/computed_style.cc
index 51bc37ed..7ded70e 100644
--- a/third_party/blink/renderer/core/style/computed_style.cc
+++ b/third_party/blink/renderer/core/style/computed_style.cc
@@ -1530,9 +1530,10 @@
       path_position.point.y() - anchor_point.y() + origin_shift_y);
   transform.Rotate(path_position.tangent_in_degrees + rotate.angle);
 
-  if (!position.X().IsAuto() || !anchor.X().IsAuto())
+  if (!position.X().IsAuto() || !anchor.X().IsAuto()) {
     // Shift the origin back to transform-origin.
     transform.Translate(-origin_shift_x, -origin_shift_y);
+  }
 }
 
 bool ComputedStyle::TextShadowDataEquivalent(const ComputedStyle& other) const {
diff --git a/third_party/blink/renderer/core/svg/svg_element.cc b/third_party/blink/renderer/core/svg/svg_element.cc
index 112d3de6..21c77a3 100644
--- a/third_party/blink/renderer/core/svg/svg_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_element.cc
@@ -322,7 +322,7 @@
 
   // Apply any "motion transform" contribution if requested (and existing.)
   if (apply_motion_transform == kIncludeMotionTransform && HasSVGRareData())
-    matrix.PreMultiply(*SvgRareData()->AnimateMotionTransform());
+    matrix.PostConcat(*SvgRareData()->AnimateMotionTransform());
 
   return matrix;
 }
diff --git a/third_party/blink/renderer/core/svg/svg_geometry_element.cc b/third_party/blink/renderer/core/svg/svg_geometry_element.cc
index 08c731e0..efad06b 100644
--- a/third_party/blink/renderer/core/svg/svg_geometry_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_geometry_element.cc
@@ -122,7 +122,7 @@
     // Un-scale to get back to the root-transform (cheaper than re-computing
     // the root transform from scratch).
     root_transform.Scale(layout_shape.StyleRef().EffectiveZoom())
-        .Multiply(transform);
+        .PreConcat(transform);
   } else {
     root_transform = layout_shape.ComputeRootTransform();
   }
diff --git a/third_party/blink/renderer/core/svg/svg_graphics_element.cc b/third_party/blink/renderer/core/svg/svg_graphics_element.cc
index 53ce0dc1..f574df2 100644
--- a/third_party/blink/renderer/core/svg/svg_graphics_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_graphics_element.cc
@@ -73,7 +73,7 @@
     if (!svg_element)
       break;
 
-    ctm = svg_element->LocalCoordinateSpaceTransform(mode).Multiply(ctm);
+    ctm = svg_element->LocalCoordinateSpaceTransform(mode).PreConcat(ctm);
 
     switch (mode) {
       case kNearestViewportScope:
diff --git a/third_party/blink/renderer/core/svg/svg_svg_element.cc b/third_party/blink/renderer/core/svg/svg_svg_element.cc
index 2ed563cb4..c8860d6 100644
--- a/third_party/blink/renderer/core/svg/svg_svg_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_svg_element.cc
@@ -478,12 +478,12 @@
 
       // Apply transforms from our ancestor coordinate space, including any
       // non-SVG ancestor transforms.
-      matrix.Multiply(layout_object->LocalToAbsoluteTransform());
+      matrix.PreConcat(layout_object->LocalToAbsoluteTransform());
 
       // At the SVG/HTML boundary (aka LayoutSVGRoot), we need to apply the
       // localToBorderBoxTransform to map an element from SVG viewport
       // coordinates to CSS box coordinates.
-      matrix.Multiply(TransformationMatrix(
+      matrix.PreConcat(TransformationMatrix(
           To<LayoutSVGRoot>(layout_object)->LocalToBorderBoxTransform()));
       // Drop any potential non-affine parts, because we're not able to convey
       // that information further anyway until getScreenCTM returns a DOMMatrix
@@ -492,7 +492,7 @@
     }
   }
   if (!HasEmptyViewBox())
-    transform.Multiply(ViewBoxToViewTransform(CurrentViewportSize()));
+    transform.PreConcat(ViewBoxToViewTransform(CurrentViewportSize()));
   return transform;
 }
 
diff --git a/third_party/blink/renderer/core/testing/null_execution_context.cc b/third_party/blink/renderer/core/testing/null_execution_context.cc
index 43e8c82..0ddd91de 100644
--- a/third_party/blink/renderer/core/testing/null_execution_context.cc
+++ b/third_party/blink/renderer/core/testing/null_execution_context.cc
@@ -19,11 +19,15 @@
 namespace blink {
 
 NullExecutionContext::NullExecutionContext()
+    : NullExecutionContext(scheduler::CreateDummyFrameScheduler()) {}
+
+NullExecutionContext::NullExecutionContext(
+    std::unique_ptr<FrameScheduler> scheduler)
     : ExecutionContext(
           v8::Isolate::GetCurrent(),
           MakeGarbageCollected<Agent>(v8::Isolate::GetCurrent(),
                                       base::UnguessableToken::Create())),
-      scheduler_(scheduler::CreateDummyFrameScheduler()) {}
+      scheduler_(std::move(scheduler)) {}
 
 NullExecutionContext::~NullExecutionContext() {}
 
@@ -41,8 +45,8 @@
 }
 
 scoped_refptr<base::SingleThreadTaskRunner> NullExecutionContext::GetTaskRunner(
-    TaskType) {
-  return Thread::Current()->GetDeprecatedTaskRunner();
+    TaskType task_type) {
+  return scheduler_->GetTaskRunner(task_type);
 }
 
 const BrowserInterfaceBrokerProxy&
diff --git a/third_party/blink/renderer/core/testing/null_execution_context.h b/third_party/blink/renderer/core/testing/null_execution_context.h
index 48f667cd..d7a3fcc 100644
--- a/third_party/blink/renderer/core/testing/null_execution_context.h
+++ b/third_party/blink/renderer/core/testing/null_execution_context.h
@@ -18,10 +18,13 @@
 
 namespace blink {
 
+class FrameScheduler;
+
 class NullExecutionContext : public GarbageCollected<NullExecutionContext>,
                              public ExecutionContext {
  public:
   NullExecutionContext();
+  explicit NullExecutionContext(std::unique_ptr<FrameScheduler> scheduler);
   ~NullExecutionContext() override;
 
   void SetURL(const KURL& url) { url_ = url; }
@@ -71,7 +74,7 @@
   // A dummy scheduler to ensure that the callers of
   // ExecutionContext::GetScheduler don't have to check for whether it's null or
   // not.
-  std::unique_ptr<FrameOrWorkerScheduler> scheduler_;
+  std::unique_ptr<FrameScheduler> scheduler_;
 
   // A fake token identifying this execution context.
   const LocalFrameToken token_;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index 7bb07d2..6495b27 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -1311,9 +1311,6 @@
 
   SerializeOtherScreenReaderAttributes(node_data);
 
-  if (accessibility_mode.has_mode(ui::AXMode::kPDF))
-    return;
-
   // Return early. The following attributes are unnecessary for ignored nodes.
   // Exception: focusable ignored nodes are fully serialized, so that reasonable
   // verbalizations can be made if they actually receive focus.
diff --git a/third_party/blink/renderer/modules/accessibility/inspector_accessibility_agent.h b/third_party/blink/renderer/modules/accessibility/inspector_accessibility_agent.h
index 7b254f8d..634ad3b9 100644
--- a/third_party/blink/renderer/modules/accessibility/inspector_accessibility_agent.h
+++ b/third_party/blink/renderer/modules/accessibility/inspector_accessibility_agent.h
@@ -123,8 +123,8 @@
                            TimerFiredFunction function)
         : TimerBase(document->GetTaskRunner(TaskType::kInternalInspector)),
           agent_(agent),
-          function_(function),
-          document_(document) {}
+          document_(document),
+          function_(function) {}
 
     void Trace(Visitor* visitor) const {
       visitor->Trace(document_);
@@ -154,8 +154,8 @@
     }
 
     WeakMember<InspectorAccessibilityAgent> agent_;
-    TimerFiredFunction function_;
     WeakMember<Document> document_;
+    TimerFiredFunction function_;
   };
 
   void CompleteQuery(AXQuery&);
diff --git a/third_party/blink/renderer/modules/xr/xr_frame.cc b/third_party/blink/renderer/modules/xr/xr_frame.cc
index b50ce7fd..99f79d1 100644
--- a/third_party/blink/renderer/modules/xr/xr_frame.cc
+++ b/third_party/blink/renderer/modules/xr/xr_frame.cc
@@ -98,7 +98,7 @@
 
   TransformationMatrix ref_space_from_mojo =
       reference_space->OffsetFromNativeMatrix();
-  ref_space_from_mojo.Multiply(*native_from_mojo);
+  ref_space_from_mojo.PreConcat(*native_from_mojo);
 
   // Can only update an XRViewerPose's views with an invertible matrix.
   if (!ref_space_from_mojo.IsInvertible()) {
diff --git a/third_party/blink/renderer/modules/xr/xr_reference_space.cc b/third_party/blink/renderer/modules/xr/xr_reference_space.cc
index efa5b6c..b608727 100644
--- a/third_party/blink/renderer/modules/xr/xr_reference_space.cc
+++ b/third_party/blink/renderer/modules/xr/xr_reference_space.cc
@@ -155,7 +155,7 @@
   auto native_from_viewer = NativeFromMojo();
   if (!native_from_viewer)
     return absl::nullopt;
-  native_from_viewer->Multiply(*mojo_from_viewer);
+  native_from_viewer->PreConcat(*mojo_from_viewer);
   return native_from_viewer;
 }
 
diff --git a/third_party/blink/renderer/modules/xr/xr_space.cc b/third_party/blink/renderer/modules/xr/xr_space.cc
index cbfde15..47b9aae 100644
--- a/third_party/blink/renderer/modules/xr/xr_space.cc
+++ b/third_party/blink/renderer/modules/xr/xr_space.cc
@@ -25,7 +25,7 @@
   if (!native_from_mojo)
     return absl::nullopt;
 
-  native_from_mojo->Multiply(*mojo_from_viewer);
+  native_from_mojo->PreConcat(*mojo_from_viewer);
 
   // This is now native_from_viewer
   return native_from_mojo;
@@ -49,7 +49,7 @@
 
   // Modifies maybe_mojo_from_native - it becomes mojo_from_offset_matrix.
   // Saves a heap allocation since there is no need to create a new unique_ptr.
-  maybe_mojo_from_native->Multiply(NativeFromOffsetMatrix());
+  maybe_mojo_from_native->PreConcat(NativeFromOffsetMatrix());
   return maybe_mojo_from_native;
 }
 
@@ -79,7 +79,7 @@
   }
 
   // Add any origin offset now.
-  mojo_from_offset->Multiply(NativeFromOffsetMatrix());
+  mojo_from_offset->PreConcat(NativeFromOffsetMatrix());
 
   absl::optional<TransformationMatrix> other_from_mojo =
       other_space->NativeFromMojo();
diff --git a/third_party/blink/renderer/platform/graphics/image.h b/third_party/blink/renderer/platform/graphics/image.h
index 1253350..660a4ff 100644
--- a/third_party/blink/renderer/platform/graphics/image.h
+++ b/third_party/blink/renderer/platform/graphics/image.h
@@ -182,7 +182,7 @@
 
   virtual bool GetHotSpot(gfx::Point&) const { return false; }
 
-  enum SizeAvailability {
+  enum SizeAvailability : uint8_t {
     kSizeUnavailable,
     kSizeAvailableAndLoadingAsynchronously,
     kSizeAvailable,
diff --git a/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.cc b/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.cc
index af9d3f3e..d82ad98 100644
--- a/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.cc
+++ b/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.cc
@@ -103,7 +103,7 @@
       plane_root_transform_->plane_root = parent.plane_root();
       plane_root_transform_->to_plane_root.MakeIdentity();
       parent.ApplyToPlaneRoot(plane_root_transform_->to_plane_root);
-      plane_root_transform_->to_plane_root.Multiply(local);
+      plane_root_transform_->to_plane_root.PreConcat(local);
       plane_root_transform_->from_plane_root = local.Inverse();
       parent.ApplyFromPlaneRoot(plane_root_transform_->from_plane_root);
       plane_root_transform_->has_animation =
@@ -154,7 +154,7 @@
     const auto& translation = node.Translation2D();
     screen_transform_->to_screen.Translate(translation.x(), translation.y());
   } else {
-    screen_transform_->to_screen.Multiply(node.MatrixWithOriginApplied());
+    screen_transform_->to_screen.PreConcat(node.MatrixWithOriginApplied());
   }
 
   auto to_screen_flattened = screen_transform_->to_screen;
diff --git a/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.h b/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.h
index 63cd1a5..28a716f 100644
--- a/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.h
+++ b/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.h
@@ -65,14 +65,14 @@
   void ApplyToScreen(TransformationMatrix& m) const {
     DCHECK(screen_transform_updated_);
     if (UNLIKELY(screen_transform_))
-      m.Multiply(to_screen());
+      m.PreConcat(to_screen());
     else
       ApplyToPlaneRoot(m);
   }
   void ApplyProjectionFromScreen(TransformationMatrix& m) const {
     DCHECK(screen_transform_updated_);
     if (UNLIKELY(screen_transform_))
-      m.Multiply(projection_from_screen());
+      m.PreConcat(projection_from_screen());
     else
       ApplyFromPlaneRoot(m);
   }
@@ -92,14 +92,14 @@
   }
   void ApplyToPlaneRoot(TransformationMatrix& m) const {
     if (UNLIKELY(plane_root_transform_)) {
-      m.Multiply(to_plane_root());
+      m.PreConcat(to_plane_root());
     } else {
       m.Translate(to_2d_translation_root_.x(), to_2d_translation_root_.y());
     }
   }
   void ApplyFromPlaneRoot(TransformationMatrix& m) const {
     if (UNLIKELY(plane_root_transform_)) {
-      m.Multiply(from_plane_root());
+      m.PreConcat(from_plane_root());
     } else {
       m.Translate(-to_2d_translation_root_.x(), -to_2d_translation_root_.y());
     }
diff --git a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder_test.cc b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder_test.cc
index dffadc4..596a588 100644
--- a/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder_test.cc
+++ b/third_party/blink/renderer/platform/image-decoders/avif/avif_image_decoder_test.cc
@@ -317,7 +317,7 @@
      ImageDecoder::kAlphaNotPremultiplied,
      ColorBehavior::Tag(),
      ImageOrientationEnum::kOriginTopLeft,
-     1,
+     0,
      {
          {gfx::Point(0, 0), SkColorSetARGB(255, 255, 0, 0)},
          {gfx::Point(1, 1), SkColorSetARGB(255, 255, 0, 0)},
diff --git a/third_party/blink/renderer/platform/loader/fetch/response_body_loader.cc b/third_party/blink/renderer/platform/loader/fetch/response_body_loader.cc
index 19d89e21..4397d63 100644
--- a/third_party/blink/renderer/platform/loader/fetch/response_body_loader.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/response_body_loader.cc
@@ -350,10 +350,10 @@
     ResponseBodyLoaderClient& client,
     scoped_refptr<base::SingleThreadTaskRunner> task_runner,
     BackForwardCacheLoaderHelper* back_forward_cache_loader_helper)
-    : bytes_consumer_(bytes_consumer),
+    : task_runner_(std::move(task_runner)),
+      bytes_consumer_(bytes_consumer),
       client_(client),
-      back_forward_cache_loader_helper_(back_forward_cache_loader_helper),
-      task_runner_(std::move(task_runner)) {
+      back_forward_cache_loader_helper_(back_forward_cache_loader_helper) {
   bytes_consumer_->SetClient(this);
   body_buffer_ = MakeGarbageCollected<Buffer>(this);
 }
diff --git a/third_party/blink/renderer/platform/loader/fetch/response_body_loader.h b/third_party/blink/renderer/platform/loader/fetch/response_body_loader.h
index 2bb3a6a..78c06fa 100644
--- a/third_party/blink/renderer/platform/loader/fetch/response_body_loader.h
+++ b/third_party/blink/renderer/platform/loader/fetch/response_body_loader.h
@@ -141,12 +141,12 @@
   void OnStateChange() override;
   String DebugName() const override { return "ResponseBodyLoader"; }
 
+  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
   Member<Buffer> body_buffer_;
   Member<BytesConsumer> bytes_consumer_;
   Member<DelegatingBytesConsumer> delegating_bytes_consumer_;
   const Member<ResponseBodyLoaderClient> client_;
   WeakMember<BackForwardCacheLoaderHelper> back_forward_cache_loader_helper_;
-  const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
   LoaderFreezeMode suspended_state_ = LoaderFreezeMode::kNone;
   bool started_ = false;
   bool aborted_ = false;
diff --git a/third_party/blink/renderer/platform/transforms/affine_transform.cc b/third_party/blink/renderer/platform/transforms/affine_transform.cc
index cdf1d91..972d5c3 100644
--- a/third_party/blink/renderer/platform/transforms/affine_transform.cc
+++ b/third_party/blink/renderer/platform/transforms/affine_transform.cc
@@ -108,12 +108,12 @@
 
 }  // anonymous namespace
 
-AffineTransform& AffineTransform::Multiply(const AffineTransform& other) {
+AffineTransform& AffineTransform::PreConcat(const AffineTransform& other) {
   *this = DoMultiply(*this, other);
   return *this;
 }
 
-AffineTransform& AffineTransform::PreMultiply(const AffineTransform& other) {
+AffineTransform& AffineTransform::PostConcat(const AffineTransform& other) {
   *this = DoMultiply(other, *this);
   return *this;
 }
@@ -128,7 +128,7 @@
   double sin_angle = sin(a);
   AffineTransform rot(cos_angle, sin_angle, -sin_angle, cos_angle, 0, 0);
 
-  Multiply(rot);
+  PreConcat(rot);
   return *this;
 }
 
diff --git a/third_party/blink/renderer/platform/transforms/affine_transform.h b/third_party/blink/renderer/platform/transforms/affine_transform.h
index 22e68837..2f1f9881c 100644
--- a/third_party/blink/renderer/platform/transforms/affine_transform.h
+++ b/third_party/blink/renderer/platform/transforms/affine_transform.h
@@ -98,10 +98,12 @@
   void MakeIdentity() { *this = AffineTransform(); }
 
   // this' = this * other
-  AffineTransform& Multiply(const AffineTransform& other);
+  AffineTransform& PreConcat(const AffineTransform& other);
   // this' = other * this
-  AffineTransform& PreMultiply(const AffineTransform& other);
+  AffineTransform& PostConcat(const AffineTransform& other);
 
+  // The semantics of the following methods are the same as PreConcat(), i.e.
+  // this' = this * operation.
   AffineTransform& Scale(double);
   AffineTransform& Scale(double sx, double sy);
   AffineTransform& ScaleNonUniform(double sx, double sy);
@@ -139,7 +141,7 @@
   }
 
   // *this = *this * t (i.e., a multRight)
-  AffineTransform& operator*=(const AffineTransform& t) { return Multiply(t); }
+  AffineTransform& operator*=(const AffineTransform& t) { return PreConcat(t); }
 
   // result = *this * t (i.e., a multRight)
   AffineTransform operator*(const AffineTransform& t) const {
diff --git a/third_party/blink/renderer/platform/transforms/affine_transform_test.cc b/third_party/blink/renderer/platform/transforms/affine_transform_test.cc
index f3301e3..adf640f 100644
--- a/third_party/blink/renderer/platform/transforms/affine_transform_test.cc
+++ b/third_party/blink/renderer/platform/transforms/affine_transform_test.cc
@@ -73,8 +73,8 @@
   EXPECT_EQ(AffineTransform(70, 100, 150, 220, 235, 346), c);
   EXPECT_EQ(AffineTransform(70, 100, 150, 220, 280, 400), d);
   AffineTransform a1 = a;
-  a.Multiply(b);
-  b.Multiply(a1);
+  a.PreConcat(b);
+  b.PreConcat(a1);
   EXPECT_EQ(c, a);
   EXPECT_EQ(d, b);
 }
@@ -83,8 +83,8 @@
   AffineTransform a(1, 2, 3, 4, 5, 6);
   AffineTransform b(10, 20, 30, 40, 50, 60);
   AffineTransform a1 = a;
-  a.PreMultiply(b);
-  b.PreMultiply(a1);
+  a.PostConcat(b);
+  b.PostConcat(a1);
   EXPECT_EQ(AffineTransform(70, 100, 150, 220, 280, 400), a);
   EXPECT_EQ(AffineTransform(70, 100, 150, 220, 235, 346), b);
 }
@@ -120,9 +120,9 @@
 TEST(AffineTransformTest, MultiplySelf) {
   AffineTransform a(1, 2, 3, 4, 5, 6);
   auto b = a;
-  a.Multiply(a);
+  a.PreConcat(a);
   EXPECT_EQ(AffineTransform(7, 10, 15, 22, 28, 40), a);
-  b.PreMultiply(b);
+  b.PostConcat(b);
   EXPECT_EQ(a, b);
 }
 
diff --git a/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.cc b/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.cc
index a6059a1..e8ccc47 100644
--- a/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.cc
+++ b/third_party/blink/renderer/platform/transforms/interpolated_transform_operation.cc
@@ -48,7 +48,7 @@
   to_.ApplyRemaining(border_box_size, starting_index_, to_transform);
 
   to_transform.Blend(from_transform, progress_);
-  transform.Multiply(to_transform);
+  transform.PreConcat(to_transform);
 }
 
 scoped_refptr<TransformOperation> InterpolatedTransformOperation::Blend(
diff --git a/third_party/blink/renderer/platform/transforms/matrix_3d_transform_operation.h b/third_party/blink/renderer/platform/transforms/matrix_3d_transform_operation.h
index 79a2313..45c02c63 100644
--- a/third_party/blink/renderer/platform/transforms/matrix_3d_transform_operation.h
+++ b/third_party/blink/renderer/platform/transforms/matrix_3d_transform_operation.h
@@ -57,7 +57,7 @@
 
   void Apply(TransformationMatrix& transform,
              const gfx::SizeF&) const override {
-    transform.Multiply(TransformationMatrix(matrix_));
+    transform.PreConcat(TransformationMatrix(matrix_));
   }
 
   scoped_refptr<TransformOperation> Accumulate(
diff --git a/third_party/blink/renderer/platform/transforms/matrix_transform_operation.h b/third_party/blink/renderer/platform/transforms/matrix_transform_operation.h
index f1a53cd..b0925fd 100644
--- a/third_party/blink/renderer/platform/transforms/matrix_transform_operation.h
+++ b/third_party/blink/renderer/platform/transforms/matrix_transform_operation.h
@@ -64,7 +64,7 @@
 
   void Apply(TransformationMatrix& transform,
              const gfx::SizeF&) const override {
-    transform.Multiply(Matrix());
+    transform.PreConcat(Matrix());
   }
 
   scoped_refptr<TransformOperation> Accumulate(
diff --git a/third_party/blink/renderer/platform/transforms/transformation_matrix.cc b/third_party/blink/renderer/platform/transforms/transformation_matrix.cc
index 88f1127..50306cd 100644
--- a/third_party/blink/renderer/platform/transforms/transformation_matrix.cc
+++ b/third_party/blink/renderer/platform/transforms/transformation_matrix.cc
@@ -470,7 +470,7 @@
   rotation_matrix.matrix_[2][1] = -sin_theta;
   rotation_matrix.matrix_[2][2] = cos_theta;
 
-  Multiply(rotation_matrix);
+  PreConcat(rotation_matrix);
 }
 
 void TransformationMatrix::RotateAboutYAxis(double angle) {
@@ -484,7 +484,7 @@
   rotation_matrix.matrix_[2][0] = sin_theta;
   rotation_matrix.matrix_[2][2] = cos_theta;
 
-  Multiply(rotation_matrix);
+  PreConcat(rotation_matrix);
 }
 
 void TransformationMatrix::RotateAboutZAxis(double angle) {
@@ -498,7 +498,7 @@
   rotation_matrix.matrix_[1][0] = -sin_theta;
   rotation_matrix.matrix_[1][1] = cos_theta;
 
-  Multiply(rotation_matrix);
+  PreConcat(rotation_matrix);
 }
 
 void TransformationMatrix::RotateAbout(double x,
@@ -563,7 +563,7 @@
     mat.matrix_[2][1] = y * z * one_minus_cos_theta - x * sin_theta;
     mat.matrix_[2][2] = cos_theta + z * z * one_minus_cos_theta;
   }
-  Multiply(mat);
+  PreConcat(mat);
 }
 
 void TransformationMatrix::Translate(double tx, double ty) {
@@ -610,7 +610,7 @@
   // And the x shear in the second column.
   mat.matrix_[1][0] = std::tan(rad_x);
 
-  Multiply(mat);
+  PreConcat(mat);
 }
 
 void TransformationMatrix::ApplyPerspectiveDepth(double p) {
@@ -618,7 +618,7 @@
   if (p != 0)
     mat.matrix_[2][3] = -1 / p;
 
-  Multiply(mat);
+  PreConcat(mat);
 }
 
 void TransformationMatrix::ApplyTransformOrigin(double x, double y, double z) {
@@ -644,10 +644,10 @@
 // TransformationMatrix lhs; lhs.Rotate(90.f);
 // TransformationMatrix rhs; rhs.Translate(12.f, 34.f);
 // TransformationMatrix prod = lhs;
-// prod.Multiply(rhs);
+// prod.PreConcat(rhs);
 // lhs.MapPoint(rhs.MapPoint(p)) == prod.MapPoint(p)
 // Also 'prod' corresponds to CSS transform:rotateZ(90deg)translate(12px,34px).
-void TransformationMatrix::Multiply(const TransformationMatrix& mat) {
+void TransformationMatrix::PreConcat(const TransformationMatrix& mat) {
   auto c0 = Col(0);
   auto c1 = Col(1);
   auto c2 = Col(2);
@@ -1097,25 +1097,25 @@
                                        1 - 2 * (xx + yy), 0,  // Q_zz
                                        0, 0, 0, 1);
 
-  Multiply(rotation_matrix);
+  PreConcat(rotation_matrix);
 
   // now apply skew
   if (decomp.skew_yz) {
     TransformationMatrix tmp;
     tmp.matrix_[2][1] = decomp.skew_yz;
-    Multiply(tmp);
+    PreConcat(tmp);
   }
 
   if (decomp.skew_xz) {
     TransformationMatrix tmp;
     tmp.matrix_[2][0] = decomp.skew_xz;
-    Multiply(tmp);
+    PreConcat(tmp);
   }
 
   if (decomp.skew_xy) {
     TransformationMatrix tmp;
     tmp.matrix_[1][0] = decomp.skew_xy;
-    Multiply(tmp);
+    PreConcat(tmp);
   }
 
   // finally, apply scale
@@ -1141,7 +1141,7 @@
   if (decomp.skew_xy) {
     TransformationMatrix skew_transform;
     skew_transform.matrix_[1][0] = decomp.skew_xy;
-    Multiply(skew_transform);
+    PreConcat(skew_transform);
   }
 
   // Scale transform.
@@ -1231,7 +1231,7 @@
 }
 
 gfx::Transform TransformationMatrix::ToTransform() const {
-  return gfx::Transform(
+  return gfx::Transform::RowMajor(
       ClampToFloat(matrix_[0][0]), ClampToFloat(matrix_[1][0]),
       ClampToFloat(matrix_[2][0]), ClampToFloat(matrix_[3][0]),
       ClampToFloat(matrix_[0][1]), ClampToFloat(matrix_[1][1]),
diff --git a/third_party/blink/renderer/platform/transforms/transformation_matrix.h b/third_party/blink/renderer/platform/transforms/transformation_matrix.h
index f0f5ba6..bea83f1 100644
--- a/third_party/blink/renderer/platform/transforms/transformation_matrix.h
+++ b/third_party/blink/renderer/platform/transforms/transformation_matrix.h
@@ -216,8 +216,12 @@
 
   void TransformBox(gfx::BoxF&) const;
 
+  // Corresponds to DOMMatrix.multiplySelf().
   // *this = *this * mat.
-  void Multiply(const TransformationMatrix&);
+  void PreConcat(const TransformationMatrix& mat);
+
+  // The following methods except PostTranslate() have the "Pre" semantics,
+  // i.e. *this = *this * operation.
 
   // Applies the current transformation on a scaling and assigns the result
   // to |this|, i.e *this = *this * scaling;
@@ -336,14 +340,14 @@
 
   // *this = *this * t
   TransformationMatrix& operator*=(const TransformationMatrix& t) {
-    Multiply(t);
+    PreConcat(t);
     return *this;
   }
 
   // result = *this * t
   TransformationMatrix operator*(const TransformationMatrix& t) const {
     TransformationMatrix result = *this;
-    result.Multiply(t);
+    result.PreConcat(t);
     return result;
   }
 
diff --git a/third_party/blink/renderer/platform/transforms/transformation_matrix_test.cc b/third_party/blink/renderer/platform/transforms/transformation_matrix_test.cc
index 38008f04..48c98f0 100644
--- a/third_party/blink/renderer/platform/transforms/transformation_matrix_test.cc
+++ b/third_party/blink/renderer/platform/transforms/transformation_matrix_test.cc
@@ -41,6 +41,31 @@
 
 }  // end namespace
 
+// This test is to make it easier to understand the order of operations.
+TEST(TransformationMatrixTest, PrePostOperations) {
+  auto m1 = TransformationMatrix::Affine(1, 2, 3, 4, 5, 6);
+  auto m2 = m1;
+  m1.Translate(10, 20);
+  m2.PreConcat(TransformationMatrix::MakeTranslation(10, 20));
+  EXPECT_EQ(m1, m2);
+
+  m1.PostTranslate(11, 22);
+  m2 = TransformationMatrix::MakeTranslation(11, 22) * m2;
+  EXPECT_EQ(m1, m2);
+
+  m1.Scale(3, 4);
+  m2.PreConcat(TransformationMatrix::MakeScale(3, 4));
+  EXPECT_EQ(m1, m2);
+
+  // TODO(wangxianzhu): Add PostScale tests when moving this test into
+  // ui/gfx/geometry/transform_unittest.cc.
+#if 0
+  m1.PostScale(5, 6);
+  m2 = TransformationMatrix::MakeScale(3, 4) * m2;
+  EXPECT_EQ(m1, m2);
+#endif
+}
+
 TEST(TransformationMatrixTest, NonInvertableBlendTest) {
   TransformationMatrix from;
   auto to = TransformationMatrix::ColMajor(2.7133590938, 0.0, 0.0, 0.0, 0.0,
@@ -164,7 +189,7 @@
 
   EXPECT_EQ(expected_a_times_b, a * b) << (a * b).ToString(true);
 
-  a.Multiply(b);
+  a.PreConcat(b);
   EXPECT_EQ(expected_a_times_b, a) << a.ToString(true);
 }
 
@@ -180,7 +205,7 @@
                                                            426, 484, 542, 600);
   // clang-format on
 
-  a.Multiply(a);
+  a.PreConcat(a);
   EXPECT_EQ(expected_a_times_a, a) << a.ToString(true);
 }
 
diff --git a/third_party/blink/tools/BUILD.gn b/third_party/blink/tools/BUILD.gn
index 3d7c0da4..8847c58 100644
--- a/third_party/blink/tools/BUILD.gn
+++ b/third_party/blink/tools/BUILD.gn
@@ -15,7 +15,6 @@
 
     # Include blinkpy tools for setting up expectations and uploading results to
     # ResultDB.
-    "//third_party/blink/tools/build_wpt_metadata.py",
     "//third_party/blink/tools/wpt_process_results.py",
     "//third_party/blink/tools/blinkpy/",
 
@@ -29,17 +28,6 @@
     "//third_party/blink/web_tests/wpt_internal/",
     "//third_party/blink/web_tests/wptrunner.blink.ini",
 
-    # Include the various Test Expectations files.
-    "//third_party/blink/web_tests/ASANExpectations",
-    "//third_party/blink/web_tests/LeakExpectations",
-    "//third_party/blink/web_tests/MSANExpectations",
-    "//third_party/blink/web_tests/NeverFixTests",
-    "//third_party/blink/web_tests/SlowTests",
-    "//third_party/blink/web_tests/StaleTestExpectations",
-    "//third_party/blink/web_tests/TestExpectations",
-    "//third_party/blink/web_tests/VirtualTestSuites",
-    "//third_party/blink/web_tests/WPTOverrideExpectations",
-
     # Include the root vpython spec.
     "//.vpython3",
   ]
@@ -62,9 +50,6 @@
       "//build/android/pylib/",
 
       # Android-specific expectations
-      "//third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations",
-      "//third_party/blink/web_tests/android/ChromeWPTOverrideExpectations",
-      "//third_party/blink/web_tests/android/WebviewWPTExpectations",
       "//third_party/blink/web_tests/android/AndroidWPTNeverFixTests",
       "//third_party/blink/web_tests/android/WPTSmokeTestCases",
     ]
diff --git a/third_party/blink/tools/blinkpy/common/config/builders.json b/third_party/blink/tools/blinkpy/common/config/builders.json
index 0e4e2be..e4102c2 100644
--- a/third_party/blink/tools/blinkpy/common/config/builders.json
+++ b/third_party/blink/tools/blinkpy/common/config/builders.json
@@ -1,5 +1,5 @@
 {
-    "Fuchsia x64": {
+    "fuchsia-x64-rel": {
         "main": "chromium.linux",
         "port_name": "fuchsia",
         "specifiers": ["Fuchsia", "Release"]
@@ -64,26 +64,6 @@
         },
         "is_try_builder": true
     },
-    "fuchsia-x64-cast-receiver-rel": {
-        "main": "tryserver.chromium.linux",
-        "port_name": "fuchsia",
-        "specifiers": ["Fuchsia", "Release"],
-        "steps": {
-            "blink_web_tests (with patch)": {},
-            "blink_wpt_tests (with patch)": {}
-        },
-        "is_try_builder": true
-    },
-    "fuchsia-x64-rel": {
-        "main": "tryserver.chromium.linux",
-        "port_name": "fuchsia",
-        "specifiers": ["Fuchsia", "Release"],
-        "steps": {
-            "blink_web_tests (with patch)": {},
-            "blink_wpt_tests (with patch)": {}
-        },
-        "is_try_builder": true
-    },
     "linux-wpt-fyi-rel": {
         "main": "chromium.fyi",
         "port_name": "linux-trusty",
diff --git a/third_party/blink/tools/blinkpy/w3c/test_importer_unittest.py b/third_party/blink/tools/blinkpy/w3c/test_importer_unittest.py
index b4115d6..62da12eb 100644
--- a/third_party/blink/tools/blinkpy/w3c/test_importer_unittest.py
+++ b/third_party/blink/tools/blinkpy/w3c/test_importer_unittest.py
@@ -24,7 +24,6 @@
 from blinkpy.w3c.test_importer import TestImporter, ROTATIONS_URL, SHERIFF_EMAIL_FALLBACK, RUBBER_STAMPER_BOT
 from blinkpy.w3c.wpt_github_mock import MockWPTGitHub
 from blinkpy.w3c.wpt_manifest import BASE_MANIFEST_NAME
-from blinkpy.web_tests.port.android import PRODUCTS_TO_EXPECTATION_FILE_PATHS
 from blinkpy.web_tests.port.android import ANDROID_DISABLED_TESTS
 from blinkpy.web_tests.builder_list import BuilderList
 
@@ -62,8 +61,6 @@
         })
         port = host.port_factory.get()
         MANIFEST_INSTALL_CMD[0] = port.python3_command()
-        for path in PRODUCTS_TO_EXPECTATION_FILE_PATHS.values():
-            host.filesystem.write_text_file(path, '')
         host.filesystem.write_text_file(ANDROID_DISABLED_TESTS, '')
         return host
 
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater.py b/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater.py
index 47ee221..d698189 100644
--- a/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater.py
+++ b/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater.py
@@ -23,7 +23,6 @@
 from blinkpy.web_tests.models.test_expectations import (
     ParseError, SystemConfigurationRemover, TestExpectations)
 from blinkpy.web_tests.models.typ_types import ResultType
-from blinkpy.web_tests.port.android import PRODUCTS_TO_EXPECTATION_FILE_PATHS
 
 _log = logging.getLogger(__name__)
 
@@ -79,8 +78,7 @@
         for tests that were renamed. Also the files may have their expectations
         updated using builder results.
         """
-        return (list(self.port.all_expectations_dict().keys()) +
-                list(PRODUCTS_TO_EXPECTATION_FILE_PATHS.values()))
+        return list(self.port.all_expectations_dict().keys())
 
     def run(self):
         """Does required setup before calling update_expectations().
@@ -1036,16 +1034,8 @@
         for path in self._test_expectations.expectations_dict:
             _log.info('Updating %s for any removed or renamed tests.',
                       self.host.filesystem.basename(path))
-            if path in PRODUCTS_TO_EXPECTATION_FILE_PATHS.values():
-                # Also delete any expectations for modified test cases at
-                # android side to avoid any conflict
-                # TODO: consider keep the triaged expectations when results do
-                # not change
-                self._clean_single_test_expectations_file(
-                    path, deleted_files + modified_files, renamed_files)
-            else:
-                self._clean_single_test_expectations_file(
-                    path, deleted_files, renamed_files)
+            self._clean_single_test_expectations_file(path, deleted_files,
+                                                      renamed_files)
         self._test_expectations.commit_changes()
 
     def _list_files(self, diff_filter):
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater_unittest.py b/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater_unittest.py
index 97ab5d3..0927d99 100644
--- a/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater_unittest.py
+++ b/third_party/blink/tools/blinkpy/w3c/wpt_expectations_updater_unittest.py
@@ -20,7 +20,6 @@
 
 from blinkpy.web_tests.builder_list import BuilderList
 from blinkpy.web_tests.models.test_expectations import TestExpectations
-from blinkpy.web_tests.port.android import PRODUCTS_TO_EXPECTATION_FILE_PATHS
 from blinkpy.web_tests.port.factory_mock import MockPortFactory
 from blinkpy.web_tests.port.test import MOCK_WEB_TESTS
 
@@ -104,8 +103,6 @@
                 },
             }))
 
-        for path in PRODUCTS_TO_EXPECTATION_FILE_PATHS.values():
-            host.filesystem.write_text_file(path, '')
         return host
 
     def test_run_single_platform_failure(self):
@@ -1320,10 +1317,6 @@
         fs.write_text_file(fs.join(MOCK_WEB_TESTS, 'new', 'b.html'), '')
         fs.write_text_file(
             fs.join(port.web_tests_dir(), 'some', 'test', 'd.html'), '')
-        # TODO(rmhasan): Remove creation of Android files within
-        # tests.
-        for path in PRODUCTS_TO_EXPECTATION_FILE_PATHS.values():
-            fs.write_text_file(path, '')
 
         updater = WPTExpectationsUpdater(host)
 
@@ -1354,8 +1347,6 @@
                             'foo/slow_timeout.html [ Slow ]\n'
                             'bar/slow.html [ Slow ]\n'))
         fs.write_text_file(expectations_path, data)
-        for path in PRODUCTS_TO_EXPECTATION_FILE_PATHS.values():
-            fs.write_text_file(path, '')
 
         newdata = data.replace('foo/slow_timeout.html [ Timeout ]',
                                'foo/slow_timeout.html [ Skip Timeout ]')
@@ -1395,11 +1386,6 @@
         fs.write_text_file(fs.join(MOCK_WEB_TESTS, 'new', 'a.html'), '')
         fs.write_text_file(fs.join(MOCK_WEB_TESTS, 'new', 'b.html'), '')
 
-        # TODO(rmhasan): Remove creation of Android files within
-        # tests.
-        for path in PRODUCTS_TO_EXPECTATION_FILE_PATHS.values():
-            fs.write_text_file(path, '')
-
         updater = WPTExpectationsUpdater(
             host, ['--clean-up-test-expectations-only',
                    '--clean-up-affected-tests-only'])
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_metadata_builder.py b/third_party/blink/tools/blinkpy/w3c/wpt_metadata_builder.py
deleted file mode 100644
index e0e90dc..0000000
--- a/third_party/blink/tools/blinkpy/w3c/wpt_metadata_builder.py
+++ /dev/null
@@ -1,488 +0,0 @@
-# Copyright 2019 The Chromium Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Converts Chromium Test Expectations into WPT Metadata ini files.
-
-This script loads TestExpectations for any WPT test and creates the metadata
-files corresponding to the expectation. This script runs as a BUILD action rule.
-The output is then bundled into the WPT isolate package to be shipped to bots
-running the WPT test suite.
-"""
-
-import argparse
-import fnmatch
-import logging
-import os
-
-from blinkpy.common.system.filesystem import FileSystem
-from blinkpy.common.system.log_utils import configure_logging
-from blinkpy.web_tests.models.typ_types import ResultType
-from collections import defaultdict
-
-_log = logging.getLogger(__name__)
-
-# Define some status bitmasks for combinations of statuses a test could exhibit.
-# The test has a harness error in its baseline file.
-HARNESS_ERROR = 1
-# The test has at least one failing subtest in its baseline file.
-SUBTEST_FAIL = 1 << 1  # 2
-# The test should be skipped
-SKIP_TEST = 1 << 2  # 4
-# The test passes - this typically appears alongside another status indicating
-# a flaky test.
-TEST_PASS = 1 << 3  # 8
-# The test fails
-TEST_FAIL = 1 << 4  # 16
-# The test times out
-TEST_TIMEOUT = 1 << 5  # 32
-# The test crashes
-TEST_CRASH = 1 << 6  # 64
-# The test failed a precondition assertion
-TEST_PRECONDITION_FAILED = 1 << 7  # 128
-# The test is annotated to use checked-in metadata, other statuses are ignored
-USE_CHECKED_IN_METADATA = 1 << 8  # 256
-
-
-class WPTMetadataBuilder(object):
-    def __init__(self, expectations, port):
-        """
-        Args:
-            expectations: a blinkpy.web_tests.models.test_expectations.TestExpectations object
-            port: a blinkpy.web_tests.port.Port object
-        """
-        self.expectations = expectations
-        self.port = port
-        # TODO(lpz): Use self.fs everywhere in this class and add tests
-        self.fs = FileSystem()
-        self.wpt_manifest = self.port.wpt_manifest("external/wpt")
-        self.metadata_output_dir = ""
-        self.checked_in_metadata_dir = ""
-        self.process_baselines = True
-        self.handle_annotations = True
-        self.checked_in_metadata_copied = set()
-        self.use_subtest_results = False
-
-    def run(self, args=None):
-        """Main entry point to parse flags and execute the script."""
-        parser = argparse.ArgumentParser(description=__doc__)
-        parser.add_argument(
-            "--metadata-output-dir",
-            help="The directory to output the metadata files into.")
-        parser.add_argument(
-            "--checked-in-metadata-dir",
-            help="Root directory of any checked-in WPT metadata files to use. "
-            "If set, these files will take precedence over legacy expectations "
-            "and baselines when both exist for a test.")
-        parser.add_argument(
-            '-v',
-            '--verbose',
-            action='store_true',
-            help='More verbose logging.')
-        parser.add_argument(
-            "--process-baselines",
-            action="store_true",
-            default=True,
-            dest="process_baselines",
-            help="Whether to translate baseline (-expected.txt) files into WPT "
-            "metadata files. This translation is lossy and results in any "
-            "subtest being accepted by wptrunner.")
-        parser.add_argument("--no-process-baselines",
-                            action="store_false",
-                            dest="process_baselines")
-        parser.add_argument(
-            "--handle-annotations",
-            action="store_true",
-            default=True,
-            dest="handle_annotations",
-            help="Whether to handle annotations in expectations files. These "
-            "are trailing comments that give additional details for how "
-            "to translate an expectation into WPT metadata.")
-        parser.add_argument("--no-handle-annotations",
-                            action="store_false",
-                            dest="handle_annotations")
-        parser.add_argument(
-            "--use-subtest-results",
-            action="store_true",
-            help="Treat subtest failures as test-level failures")
-        args = parser.parse_args(args)
-
-        log_level = logging.DEBUG if args.verbose else logging.INFO
-        configure_logging(logging_level=log_level, include_time=True)
-
-        self.metadata_output_dir = args.metadata_output_dir
-        self.checked_in_metadata_dir = args.checked_in_metadata_dir
-        self.process_baselines = args.process_baselines
-        self.handle_annotations = args.handle_annotations
-        self.use_subtest_results = args.use_subtest_results
-        self._build_metadata_and_write()
-
-        return 0
-
-    @staticmethod
-    def status_bitmap_to_string(test_status_bitmap, use_subtest_results):
-        # Nearly all statuses are the result of translating baselines or
-        # expectations. The exception is explicitly flagging the test to use
-        # checked-in metadata which must contain the correct subtest statuses.
-        # We ensure that translation and checked-in metadata aren't mixed.
-        assert not test_status_bitmap & USE_CHECKED_IN_METADATA, "illegal mix of translation and checked-in-metadata"
-        statuses = []
-
-        if test_status_bitmap & HARNESS_ERROR:
-            statuses.append("ERROR")
-        if test_status_bitmap & TEST_PASS:
-            # We need both PASS and OK. Reftests will PASS while testharness
-            # tests are OK.
-            statuses.append("PASS")
-            statuses.append("OK")
-        if (test_status_bitmap & TEST_FAIL or
-                use_subtest_results and test_status_bitmap & SUBTEST_FAIL):
-            # We need both FAIL and ERROR. Reftests will FAIL while testharness
-            # tests have ERRORs.
-            statuses.append("FAIL")
-            statuses.append("ERROR")
-        if test_status_bitmap & TEST_TIMEOUT:
-            statuses.append("TIMEOUT")
-        if test_status_bitmap & TEST_CRASH:
-            statuses.append("CRASH")
-        if test_status_bitmap & TEST_PRECONDITION_FAILED:
-            statuses.append("PRECONDITION_FAILED")
-
-        result = ""
-        # Since status translation is lossy, we always instruct wptrunner to
-        # ignore subtest statuses unless --use-subtest-results is set.
-        if not use_subtest_results:
-            result += ("  blink_expect_any_subtest_status: True"
-                       " # wpt_metadata_builder.py\n")
-        if statuses:
-            result += "  expected: [%s]\n" % ", ".join(statuses)
-        return result
-
-    def _build_metadata_and_write(self):
-        """Build the metadata files and write them to disk."""
-        if self.fs.exists(self.metadata_output_dir):
-            _log.debug("Output dir exists, deleting: %s",
-                       self.metadata_output_dir)
-            self.fs.rmtree(self.metadata_output_dir)
-
-        # Start by populating any metadata that is checked into the source tree.
-        # We will later determine, for each test, whether some other status
-        # should overwrite this.
-        if self.checked_in_metadata_dir and self.fs.exists(
-                self.checked_in_metadata_dir):
-            _log.info("Copying checked-in WPT metadata before translated "
-                      "files.")
-            self._copy_checked_in_metadata()
-        else:
-            _log.warning("Not using checked-in WPT metadata, path is empty or "
-                         "does not exist: %s" % self.checked_in_metadata_dir)
-
-        tests_for_metadata = self.get_tests_needing_metadata()
-        _log.info("Found %d tests requiring metadata", len(tests_for_metadata))
-        for test_name, test_status_bitmap in sorted(tests_for_metadata.items()):
-            filename, file_contents = self.get_metadata_filename_and_contents(
-                test_name, test_status_bitmap)
-            if not filename or not file_contents:
-                continue
-            self._write_translated_metadata_to_file(filename, file_contents)
-
-        # Finally, output a stamp file with the same name as the output
-        # directory. The stamp file is empty, it's only used for its mtime.
-        # This makes the GN build system happy (see crbug.com/995112).
-        with self.fs.open_text_file_for_writing(self.metadata_output_dir +
-                                                ".stamp"):
-            pass
-
-    def _copy_checked_in_metadata(self):
-        """Copies checked-in metadata files to the metadata output directory."""
-        for filename in self.fs.files_under(self.checked_in_metadata_dir):
-            # We match any .ini files in the path. This will find .ini files
-            # other than just metadata (such as tox.ini), but that is ok
-            # since wptrunner will just ignore those.
-            if not fnmatch.fnmatch(filename, "*.ini"):
-                continue
-
-            # Found a checked-in .ini file. Copy it to the metadata output
-            # directory in the same sub-path as where it is checked in.
-            # So /checked/in/a/b/c.ini goes to /metadata/out/a/b/c.ini
-            output_path = filename.replace(self.checked_in_metadata_dir,
-                                           self.metadata_output_dir)
-            if not self.fs.exists(self.fs.dirname(output_path)):
-                self.fs.maybe_make_directory(self.fs.dirname(output_path))
-            _log.debug("Copying %s to %s" % (filename, output_path))
-            # Keep track that we copied this file. We may need to purge it if
-            # another status overwrites it.
-            self.checked_in_metadata_copied.add(output_path)
-            self.fs.copyfile(filename, output_path)
-
-    def _write_translated_metadata_to_file(self, filename, file_contents):
-        # It's possible that a metadata file was checked in and copied to this
-        # location. If that's the case, we want to delete the file to purge the
-        # checked-in contents before writing the translated contents. This must
-        # only happen the first time we write, since we may need to append more
-        # translated tests to this same file.
-        if filename in self.checked_in_metadata_copied:
-            _log.debug(
-                "Checked-in metadata exists, overwriting with translation: %s"
-                % filename)
-            self.fs.remove(filename)
-            # Remove the file from the copied list so we don't try deleting it
-            # again.
-            self.checked_in_metadata_copied.remove(filename)
-
-        # Write the contents to the file name
-        if not self.fs.exists(os.path.dirname(filename)):
-            self.fs.maybe_make_directory(self.fs.dirname(filename))
-
-        # Note that we append to the metadata file in order to allow multiple
-        # tests to be present in the same .ini file (ie: for multi-global tests)
-        with self.fs.open_text_file_for_appending(filename) as metadata_file:
-            metadata_file.write(file_contents)
-
-    def get_tests_needing_metadata(self):
-        """Determines which tests need metadata files.
-
-        This function loops over the tests to be run and checks whether each test
-        has an expectation (eg: in TestExpectations) and/or a baseline (ie:
-        test-name-expected.txt). The existence of those things will determine
-        the information that will be emitted into the tests's metadata file.
-
-        Returns:
-            A dict. The key is the string test name and the value is an integer
-            bitmap of statuses for the test.
-        """
-        tests_needing_metadata = defaultdict(int)
-        for test_name in self.port.tests(paths=["external/wpt"]):
-            # First, check if the test has a baseline. Other forms of
-            # expectations may overwrite this.
-            if self.process_baselines:
-                test_baseline = self.port.expected_text(test_name)
-                if test_baseline:
-                    self._handle_test_with_baseline(test_name,
-                                                    tests_needing_metadata)
-
-            # Next check for expectations, which could overwrite baselines
-            expectation_line = self.expectations.get_expectations(test_name)
-            self._handle_test_with_expectation(test_name, expectation_line,
-                                               tests_needing_metadata)
-
-        return tests_needing_metadata
-
-    def _handle_test_with_expectation(self, test_name, expectation_line,
-                                      status_dict):
-        """Handles a single test expectation and updates |status_dict|."""
-        test_statuses = expectation_line.results
-        annotations = expectation_line.trailing_comments
-
-        # If a test is annotated to use checked-in metadata then that overrides
-        # other statuses and we exit early.
-        if self.handle_annotations and annotations:
-            if "wpt_use_checked_in_metadata" in annotations:
-                status_dict[test_name] |= USE_CHECKED_IN_METADATA
-                return
-
-        if ResultType.Skip in test_statuses:
-            # Skips are handled alone, so don't look at any other statuses
-            status_dict[test_name] |= SKIP_TEST
-            return
-
-        # use expectation from WPT baselines if no other expectations
-        if expectation_line.is_default_pass:
-            return
-
-        # Guard against the only test_status being Pass (without any
-        # annotations), we don't want to create metadata for such a test.
-        if (len(test_statuses) == 1 and ResultType.Pass in test_statuses
-                and not annotations):
-            # remove the entry possibly added when handle baseline
-            status_dict.pop(test_name, 0)
-            return
-
-        # If an expectation exists for this test, clear the expectation
-        # derived from baseline. Several reasons here:
-        # 1. We need have a way to override derived expectations.
-        # 2. When the test is not expected to pass, derived expectations
-        #    could be incorrect.
-        # 3. Conceptually it is easier to understand that we only use
-        #    derived expectations when no test expectations exist.
-        status_dict[test_name] &= ~SUBTEST_FAIL
-
-        status_bitmap = 0
-        if ResultType.Pass in test_statuses:
-            status_bitmap |= TEST_PASS
-        if ResultType.Failure in test_statuses:
-            status_bitmap |= TEST_FAIL
-        if ResultType.Timeout in test_statuses:
-            status_bitmap |= TEST_TIMEOUT
-        if ResultType.Crash in test_statuses:
-            status_bitmap |= TEST_CRASH
-        if self.handle_annotations and annotations:
-            if "wpt_subtest_failure" in annotations:
-                status_bitmap |= SUBTEST_FAIL
-            if "wpt_precondition_failed" in annotations:
-                status_bitmap |= TEST_PRECONDITION_FAILED
-        # Update status bitmap for this test
-        status_dict[test_name] |= status_bitmap
-
-    def _test_was_skipped(self, test_name, status_dict):
-        """Returns whether |test_name| is marked as skipped in |status_dict|."""
-        return test_name in status_dict and (
-            status_dict[test_name] & SKIP_TEST)
-
-    def _handle_test_with_baseline(self, test_name, status_dict):
-        """Handles a single test baseline and updates |status_dict|."""
-        status_bitmap = 0
-        if self.port.expected_subtest_failure(test_name):
-            status_bitmap |= SUBTEST_FAIL
-        if self.port.expected_harness_error(test_name):
-            status_bitmap |= HARNESS_ERROR
-        if status_bitmap > 0:
-            status_dict[test_name] |= status_bitmap
-        else:
-            # Treat this as an error because we don't want it to happen.
-            # Either the non-FAIL statuses need to be handled here, or the
-            # baseline is all PASS which should just be deleted.
-            _log.error("Test %s has a non-FAIL baseline" % test_name)
-
-    def _metadata_filename_from_test_file(self, wpt_test_file):
-        """Returns the filename of the metadata (.ini) file for the test.
-
-        Args:
-            wpt_test_file: The file on disk that the specified test lives in.
-                For multi-global tests this is usually a ".js" file.
-
-        Returns:
-            The fully-qualified string path of the metadata file for this test.
-        """
-        assert "?" not in wpt_test_file
-        test_file_parts = wpt_test_file.split("/")
-        return os.path.join(self.metadata_output_dir,
-                            *test_file_parts) + ".ini"
-
-    def _metadata_inline_test_name_from_test_name(self, wpt_test_name):
-        """Returns the test name to use *inside* of a metadata file.
-
-        The inline name inside the metadata file is the logical name of the
-        test without any subdirectories.
-        For multi-global tests this means that it must have the specific scope
-        of the test (eg: worker, window, etc). This name must also include any
-        variants that are set.
-
-        Args:
-            wpt_test_name: The fully-qualified test name which contains all
-                subdirectories as well as scope (for multi-globals), and
-                variants.
-
-        Returns:
-            The string test name inside of the metadata file.
-        """
-        # To generate the inline test name we basically want to strip away the
-        # subdirectories from the test name, being careful not to accidentally
-        # clobber the variant.
-        variant_split = wpt_test_name.split("?")
-        test_path = variant_split[0]
-        test_name_part = test_path.split("/")[-1]
-        variant = "?" + variant_split[1] if len(variant_split) == 2 else ""
-        return test_name_part + variant
-
-    def get_metadata_filename_and_contents(self,
-                                           chromium_test_name,
-                                           test_status_bitmap=0):
-        """Determines the metadata filename and contents for the specified test.
-
-        The metadata filename is derived from the test name but will differ if
-        the expectation is for a single test or for a directory of tests. The
-        contents of the metadata file will also differ for those two cases.
-
-        Args:
-            chromium_test_name: A Chromium test name from the expectation file,
-                which starts with `external/wpt`.
-            test_status_bitmap: An integer containing additional data about the
-                status, such as enumerating flaky statuses, or whether a test has
-                a combination of harness error and subtest failure.
-
-        Returns:
-            A pair of strings, the first is the path to the metadata file and
-            the second is the contents to write to that file. Or None if the
-            test does not need a metadata file.
-        """
-        # Ignore expectations for non-WPT tests
-        if (not chromium_test_name
-                or not chromium_test_name.startswith('external/wpt')):
-            return None, None
-
-        # Also ignore any test annotated to use checked-in metadata. By
-        # definition, the metadata is already there, so there is no metadata to
-        # be built by this code.
-        if test_status_bitmap & USE_CHECKED_IN_METADATA:
-            _log.debug("Using checked-in metadata for test %s" %
-                       chromium_test_name)
-            return None, None
-
-        # Split the test name by directory. We omit the first 2 entries because
-        # they are 'external' and 'wpt' and these don't exist in the WPT's test
-        # names.
-        wpt_test_name_parts = chromium_test_name.split("/")[2:]
-        # The WPT test name differs from the Chromium test name in that the WPT
-        # name omits `external/wpt`.
-        wpt_test_name = "/".join(wpt_test_name_parts)
-
-        # Check if this is a test file or a test directory
-        is_test_dir = chromium_test_name.endswith("/")
-        metadata_filename = None
-        metadata_file_contents = None
-        if is_test_dir:
-            # A test directory gets one metadata file called __dir__.ini and all
-            # tests in that dir are skipped.
-            metadata_filename = os.path.join(self.metadata_output_dir,
-                                             *wpt_test_name_parts)
-            metadata_filename = os.path.join(metadata_filename, "__dir__.ini")
-            _log.debug("Creating a dir-wide ini file %s", metadata_filename)
-
-            metadata_file_contents = self._get_dir_disabled_string()
-        else:
-            # For individual tests, we create one file per test, with the name
-            # of the test in the file as well.
-            test_file_path = self.wpt_manifest.file_path_for_test_url(
-                wpt_test_name)
-            if not test_file_path:
-                _log.info("Could not find file for test %s, skipping" %
-                          wpt_test_name)
-                return None, None
-
-            metadata_filename = self._metadata_filename_from_test_file(
-                test_file_path)
-            _log.debug("Creating a test ini file %s with status_bitmap %s",
-                       metadata_filename, test_status_bitmap)
-            inline_test_name = self._metadata_inline_test_name_from_test_name(
-                wpt_test_name)
-            metadata_file_contents = self._get_test_failed_string(
-                inline_test_name, test_status_bitmap)
-
-        return metadata_filename, metadata_file_contents
-
-    def _get_dir_disabled_string(self):
-        return "disabled: wpt_metadata_builder.py\n"
-
-    def _get_test_disabled_string(self, test_name):
-        return "[%s]\n  disabled: wpt_metadata_builder.py\n" % test_name
-
-    def _get_test_failed_string(self, inline_test_name, test_status_bitmap):
-        # The contents of the metadata file is two lines:
-        # 1. the inline name of the WPT test pathinside square brackets. This
-        #    name contains the test scope (for multi-globals) and variants.
-        # 2. an indented line with the test status and reason
-        result = "[%s]\n" % inline_test_name
-
-        # A skipped test is a little special in that it doesn't happen along with
-        # any other status. So we compare directly against SKIP_TEST and also
-        # return right away.
-        if test_status_bitmap & SKIP_TEST:
-            result += "  disabled: wpt_metadata_builder.py\n"
-            return result
-
-        # Other test statuses can exist together. But ensure we have at least one.
-        expected_string = self.status_bitmap_to_string(
-            test_status_bitmap, self.use_subtest_results)
-        if expected_string:
-            result += expected_string
-        return result
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_metadata_builder_unittest.py b/third_party/blink/tools/blinkpy/w3c/wpt_metadata_builder_unittest.py
deleted file mode 100644
index 6bb8525..0000000
--- a/third_party/blink/tools/blinkpy/w3c/wpt_metadata_builder_unittest.py
+++ /dev/null
@@ -1,743 +0,0 @@
-# Copyright 2019 The Chromium Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from collections import OrderedDict
-import json
-import os
-import unittest
-
-from blinkpy.common.host_mock import MockHost
-from blinkpy.common.system.filesystem_mock import MockFileSystem
-from blinkpy.web_tests.models.test_expectations import TestExpectations
-from blinkpy.web_tests.port.factory_mock import MockPortFactory
-from blinkpy.w3c.wpt_manifest import BASE_MANIFEST_NAME
-from blinkpy.w3c.wpt_metadata_builder import (
-    WPTMetadataBuilder,
-    HARNESS_ERROR,
-    SKIP_TEST,
-    SUBTEST_FAIL,
-    TEST_FAIL,
-    TEST_PASS,
-    TEST_TIMEOUT,
-    TEST_PRECONDITION_FAILED,
-    USE_CHECKED_IN_METADATA,
-)
-
-
-def _append_to_expectation_dict(exp_dict,
-                                exp_file,
-                                test_path,
-                                test_statuses,
-                                is_default_pass=False,
-                                trailing_comments=""):
-    """Appends expectation lines to an expectation dict.
-
-    Allows creating multi-layered expectations spread across several files.
-
-    Args:
-        ordered_dict: an OrderedDict to append to
-        exp_file: str, name of the expectation file (eg: NeverFixTests, FooTests)
-        test_path: str, the path to set expectations for
-        test_status: str, the statuses of the test
-        is_default_pass: bool, is_default_pass flag for the new expectation
-        trailing_comments: str, comments at the end of the expectation line.
-    """
-    if exp_file not in exp_dict:
-        exp_dict[exp_file] = "# results: [ Pass Failure Timeout Crash Skip ]\n"
-    if is_default_pass:
-        return
-    exp_dict[exp_file] += ("%s [ %s ]%s\n" %
-                           (test_path, test_statuses, trailing_comments))
-
-
-def _make_expectation_with_dict(port, expectation_dict):
-    """Creates an expectation object from an expectation dict.
-
-    Args:
-        port: the port to run against
-        expectation_dict: an OrderedDict containing expectation files and their
-            contents
-
-    Returns:
-        An expectation object with the contents of the dict.
-    """
-    return TestExpectations(port, expectations_dict=expectation_dict)
-
-
-def _make_expectation(port,
-                      test_path,
-                      test_statuses,
-                      is_default_pass=False,
-                      trailing_comments=""):
-    """Creates an expectation object for a single test or directory.
-
-    Args:
-        port: the port to run against
-        test_path: str, the path to set expectations for
-        test_status: str, the statuses of the test
-        is_default_pass: bool, is_default_pass flag for the new expectation
-        trailing_comments: str, comments at the end of the expectation line.
-
-    Returns:
-        An expectation object with the given test and statuses.
-    """
-    expectation_dict = OrderedDict()
-    _append_to_expectation_dict(expectation_dict, "expectations", test_path,
-                                test_statuses, is_default_pass, trailing_comments)
-    return _make_expectation_with_dict(port, expectation_dict)
-
-
-class WPTMetadataBuilderTest(unittest.TestCase):
-    def setUp(self):
-        self.num = 2
-        self.host = MockHost()
-        self.host.port_factory = MockPortFactory(self.host)
-        self.port = self.host.port_factory.get()
-
-        # Write a dummy manifest file, describing what tests exist.
-        self.host.filesystem.write_text_file(
-            self.port.web_tests_dir() + 'external/' + BASE_MANIFEST_NAME,
-            json.dumps({
-                'items': {
-                    'reftest': {
-                        'reftest.html': [
-                            'c3f2fb6f436da59d43aeda0a7e8a018084557033',
-                            [None, [['reftest-ref.html', '==']], {}],
-                        ]
-                    },
-                    'testharness': {
-                        'test.html': [
-                            'd933fd981d4a33ba82fb2b000234859bdda1494e',
-                            [None, {}]
-                        ],
-                        'variant.html': [
-                            'b8db5972284d1ac6bbda0da81621d9bca5d04ee7',
-                            ['variant.html?foo=bar/abc', {}],
-                            ['variant.html?foo=baz', {}],
-                        ],
-                        'dir': {
-                            'zzzz.html': [
-                                '03ada7aa0d4d43811652fc679a00a41b9653013d',
-                                [None, {}]
-                            ],
-                            'multiglob.https.any.js': [
-                                'd6498c3e388e0c637830fa080cca78b0ab0e5305',
-                                ['dir/multiglob.https.any.window.html', {}],
-                                ['dir/multiglob.https.any.worker.html', {}],
-                            ],
-                        },
-                    },
-                    'manual': {
-                        'x-manual.html': [
-                            'b8db5972284d1ac6bbda0da81621d9bca5d04ee7',
-                            [None, {}]
-                        ],
-                    },
-                },
-            }))
-
-    def test_non_wpt_test(self):
-        """A non-WPT test should not get any metadata."""
-        test_name = "some/other/test.html"
-        expectations = _make_expectation(self.port, test_name, "Skip")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, SKIP_TEST)
-        self.assertIsNone(filename)
-        self.assertIsNone(contents)
-
-    def test_wpt_test_without_manifest_entry(self):
-        """A WPT test that is not in the manifest should not get a baseline."""
-        test_name = "external/wpt/test-not-in-manifest.html"
-        expectations = _make_expectation(self.port, test_name, "Skip")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, SKIP_TEST)
-        self.assertIsNone(filename)
-        self.assertIsNone(contents)
-
-    def test_wpt_test_not_skipped(self):
-        """A WPT test that is not skipped should not get a SKIP metadata."""
-        test_name = "external/wpt/test.html"
-        expectations = _make_expectation(self.port, test_name, "Timeout")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_names = metadata_builder.get_tests_needing_metadata()
-        # The test will appear in the result but won't have a SKIP status
-        found = False
-        for name_item, status_item in test_names.items():
-            if name_item == test_name:
-                found = True
-                self.assertNotEqual(SKIP_TEST, status_item)
-        self.assertTrue(found)
-
-    def test_same_metadata_file_for_variants(self):
-        """Variants of a test all go in the same metadata file."""
-        test_name1 = "external/wpt/variant.html?foo=bar/abc"
-        test_name2 = "external/wpt/variant.html?foo=baz"
-        expectation_dict = OrderedDict()
-        _append_to_expectation_dict(expectation_dict, "TestExpectations",
-                                    test_name1, "Failure")
-        _append_to_expectation_dict(expectation_dict, "TestExpectations",
-                                    test_name2, "Timeout")
-        expectations = _make_expectation_with_dict(self.port, expectation_dict)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        metadata_builder.metadata_output_dir = "out"
-        metadata_builder.fs = MockFileSystem()
-        metadata_builder._build_metadata_and_write()
-
-        # Both the tests go into the same metadata file, named without any
-        # variants.
-        metadata_file = os.path.join("out", "variant.html.ini")
-        with metadata_builder.fs.open_text_file_for_reading(
-                metadata_file) as f:
-            data = f.read()
-        # Inside the metadata file, we have separate entries for each variant
-        self.assertEqual(
-            "[variant.html?foo=bar/abc]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n"
-            "  expected: [FAIL, ERROR]\n"
-            "[variant.html?foo=baz]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n"
-            "  expected: [TIMEOUT]\n",
-            data)
-
-    def test_parse_baseline_all_pass(self):
-        """A WPT test with an all-pass baseline doesn't get metadata."""
-        # Here we use a test_name that is actually in the test manifest
-        test_name = "external/wpt/dir/zzzz.html"
-        # Manually initialize the baseline file and its contents
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nPASS some subtest\nPASS another subtest\n")
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertFalse(test_and_status_dict)
-
-    def test_parse_baseline_subtest_fail(self):
-        """Test parsing a baseline with a failing subtest."""
-        # Here we use a test_name that is actually in the test manifest
-        test_name = "external/wpt/dir/zzzz.html"
-        # Manually initialize the baseline file and its contents
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nPASS some subtest\nFAIL another subtest\n")
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(SUBTEST_FAIL, test_and_status_dict[test_name])
-
-    def test_parse_baseline_subtest_notrun(self):
-        """Test parsing a baseline with a notrun subtest."""
-        # Here we use a test_name that is actually in the test manifest
-        test_name = "external/wpt/dir/zzzz.html"
-        # Manually initialize the baseline file and its contents
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nPASS some subtest\nNOTRUN another subtest\n")
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(SUBTEST_FAIL, test_and_status_dict[test_name])
-
-    def test_parse_baseline_subtest_timeout(self):
-        """Test parsing a baseline with a timeout subtest."""
-        # Here we use a test_name that is actually in the test manifest
-        test_name = "external/wpt/dir/zzzz.html"
-        # Manually initialize the baseline file and its contents
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nTIMEOUT some subtest\nPASS another subtest\n")
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(SUBTEST_FAIL, test_and_status_dict[test_name])
-
-    def test_parse_baseline_harness_error(self):
-        """Test parsing a baseline with a harness error."""
-        # Here we use a test_name that is actually in the test manifest
-        test_name = "external/wpt/dir/zzzz.html"
-        # Manually initialize the baseline file and its contents
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename, "This is a test\nHarness Error. some stuff\n")
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(HARNESS_ERROR, test_and_status_dict[test_name])
-
-    def test_parse_baseline_subtest_fail_and_harness_error(self):
-        """Test parsing a baseline with a harness error AND a subtest fail."""
-        # Here we use a test_name that is actually in the test manifest
-        test_name = "external/wpt/dir/zzzz.html"
-        # Manually initialize the baseline file and its contents
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nHarness Error. some stuff\nPASS some subtest\nFAIL another subtest\n"
-        )
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(SUBTEST_FAIL | HARNESS_ERROR,
-                         test_and_status_dict[test_name])
-
-    def test_metadata_for_flaky_test(self):
-        """A WPT test that is flaky has multiple statuses in metadata."""
-        test_name = "external/wpt/test.html"
-        expectations = _make_expectation(self.port, test_name, "Pass Failure")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, TEST_PASS | TEST_FAIL)
-        self.assertEqual("test.html.ini", filename)
-        # The PASS and FAIL expectations fan out to also include OK and ERROR
-        # to support reftest/testharness test differences.
-        self.assertEqual(
-            "[test.html]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n  expected: [PASS, OK, FAIL, ERROR]\n",
-            contents)
-
-    def test_metadata_for_skipped_test(self):
-        """A skipped WPT test should get a test-specific metadata file."""
-        test_name = "external/wpt/test.html"
-        expectations = _make_expectation(self.port, test_name, "Skip")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, SKIP_TEST)
-        self.assertEqual("test.html.ini", filename)
-        self.assertEqual("[test.html]\n  disabled: wpt_metadata_builder.py\n",
-                         contents)
-
-    def test_metadata_for_skipped_test_with_variants(self):
-        """A skipped WPT tests with variants should get a test-specific metadata file."""
-        test_name = "external/wpt/variant.html?foo=bar/abc"
-        expectations = _make_expectation(self.port, test_name, "Skip")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, SKIP_TEST)
-        # The metadata file name should not include variants
-        self.assertEqual("variant.html.ini", filename)
-        # ..but the contents of the file should include variants in the test name
-        self.assertEqual(
-            "[variant.html?foo=bar/abc]\n  disabled: wpt_metadata_builder.py\n",
-            contents)
-
-    def test_metadata_for_skipped_directory(self):
-        """A skipped WPT directory should get a dir-wide metadata file."""
-        test_dir = "external/wpt/test_dir/"
-        expectations = _make_expectation(self.port, test_dir, "Skip")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_dir, SKIP_TEST)
-        self.assertEqual(os.path.join("test_dir", "__dir__.ini"), filename)
-        self.assertEqual("disabled: wpt_metadata_builder.py\n", contents)
-
-    def test_metadata_for_wpt_test_with_fail_baseline(self):
-        """A WPT test with a baseline file containing failures gets metadata."""
-        test_name = "external/wpt/dir/zzzz.html"
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, SUBTEST_FAIL)
-        self.assertEqual(os.path.join("dir", "zzzz.html.ini"), filename)
-        self.assertEqual(
-            "[zzzz.html]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n",
-            contents)
-
-    def test_metadata_for_wpt_test_with_harness_error_baseline(self):
-        """A WPT test with a baseline file containing a harness error gets metadata."""
-        test_name = "external/wpt/dir/zzzz.html"
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, HARNESS_ERROR)
-        self.assertEqual(os.path.join("dir", "zzzz.html.ini"), filename)
-        self.assertEqual(
-            "[zzzz.html]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n  expected: [ERROR]\n",
-            contents)
-
-    def test_metadata_for_wpt_test_with_harness_error_and_subtest_fail_baseline(
-            self):
-        """A WPT test with a baseline file containing a harness error and subtest failure gets metadata."""
-        test_name = "external/wpt/dir/zzzz.html"
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, SUBTEST_FAIL | HARNESS_ERROR)
-        self.assertEqual(os.path.join("dir", "zzzz.html.ini"), filename)
-        self.assertEqual(
-            "[zzzz.html]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n  expected: [ERROR]\n",
-            contents)
-
-    def test_metadata_for_wpt_multiglobal_test_with_baseline(self):
-        """A WPT test with a baseline file containing failures gets metadata."""
-        test_name = "external/wpt/dir/multiglob.https.any.window.html"
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, SUBTEST_FAIL)
-        # The metadata filename matches the test *filename*, not the test name,
-        # which in this case is the js file from the manifest.
-        self.assertEqual(
-            os.path.join("dir", "multiglob.https.any.js.ini"), filename)
-        # The metadata contents contains the *test name*
-        self.assertEqual(
-            "[multiglob.https.any.window.html]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n",
-            contents)
-
-    def test_metadata_for_precondition_failed(self):
-        """A WPT ttest hat fails a precondition."""
-        test_name = "external/wpt/test.html"
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, TEST_PRECONDITION_FAILED)
-        self.assertEqual("test.html.ini", filename)
-        # The PASS and FAIL expectations fan out to also include OK and ERROR
-        # to support reftest/testharness test differences.
-        self.assertEqual(
-            "[test.html]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n  expected: [PRECONDITION_FAILED]\n",
-            contents)
-
-    def test_metadata_for_use_checked_in_metadata_annotation(self):
-        """A WPT test annotated to use checked-in metadata."""
-        test_name = "external/wpt/test.html"
-        expectations = TestExpectations(self.port)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, USE_CHECKED_IN_METADATA)
-        # If the test is using the metadata that is checked-in, then there is no
-        # work to be done by the metadata builder.
-        self.assertIsNone(filename)
-        self.assertIsNone(contents)
-
-    def test_parse_subtest_failure_annotation(self):
-        """Check that we parse the wpt_subtest_failure annotation correctly."""
-        test_name = "external/wpt/test.html"
-        expectations = _make_expectation(
-            self.port,
-            test_name,
-            "Pass",
-            trailing_comments=" # wpt_subtest_failure")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(TEST_PASS | SUBTEST_FAIL,
-                         test_and_status_dict[test_name])
-
-    def test_parse_precondition_failure_annotation(self):
-        """Check that we parse the wpt_precondition_failed annotation correctly."""
-        test_name = "external/wpt/test.html"
-        expectations = _make_expectation(
-            self.port,
-            test_name,
-            "Pass",
-            trailing_comments=" # wpt_precondition_failed")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(TEST_PASS | TEST_PRECONDITION_FAILED,
-                         test_and_status_dict[test_name])
-
-    def test_metadata_filename_from_test_file(self):
-        """Check that we get the correct metadata filename in various cases."""
-        expectations = TestExpectations(self.port)
-        mb = WPTMetadataBuilder(expectations, self.port)
-        self.assertEqual("test.html.ini",
-                         mb._metadata_filename_from_test_file("test.html"))
-        test_file = os.path.join("dir", "multiglob.https.any.js")
-        self.assertEqual(test_file + ".ini",
-                         mb._metadata_filename_from_test_file(test_file))
-        with self.assertRaises(AssertionError):
-            mb._metadata_filename_from_test_file("test.html?variant=abc")
-
-    def test_inline_test_name_from_test_name(self):
-        """Check that we get the correct inline test name in various cases."""
-        expectations = TestExpectations(self.port)
-        mb = WPTMetadataBuilder(expectations, self.port)
-        self.assertEqual(
-            "test.html",
-            mb._metadata_inline_test_name_from_test_name("test.html"))
-        self.assertEqual(
-            "test.html",
-            mb._metadata_inline_test_name_from_test_name("dir/test.html"))
-        self.assertEqual(
-            "test.html?variant=abc",
-            mb._metadata_inline_test_name_from_test_name(
-                "dir/test.html?variant=abc"))
-        self.assertEqual(
-            "test.html?variant=abc/def",
-            mb._metadata_inline_test_name_from_test_name(
-                "dir/test.html?variant=abc/def"))
-        self.assertEqual(
-            "test.worker.html",
-            mb._metadata_inline_test_name_from_test_name("test.worker.html"))
-        self.assertEqual(
-            "test.worker.html?variant=abc",
-            mb._metadata_inline_test_name_from_test_name(
-                "dir/test.worker.html?variant=abc"))
-
-    def test_copy_checked_in_metadata(self):
-        # Ensure that ini metadata files are copied from the checked-in dir to
-        # the output dir as expected.
-        expectations = TestExpectations(self.port)
-        mb = WPTMetadataBuilder(expectations, self.port)
-        # Set the metadata builder to use mock filesystem populated with some
-        # test data
-        mb.checked_in_metadata_dir = "src"
-        mb.metadata_output_dir = "out"
-        mock_checked_in_files = {
-            "src/a/b/c.html": b"",
-            "src/a/b/c.html.ini": b"",
-            "src/a/d/e.html": b"",
-            "src/a/d/e.html.ini": b"checked-in",
-            "src/a/tox.ini": b"",
-
-            # Put one duplicate file in the output directory to simulate a test
-            # with both legacy expectations and checked-in metadata
-            "out/a/d/e.html.ini": b"legacy",
-        }
-        mb.fs = MockFileSystem(files=mock_checked_in_files)
-
-        # Ensure that the duplicate file starts out with the legacy content.
-        duplicate_ini_file = "out/a/d/e.html.ini"
-        self.assertEqual("legacy", mb.fs.read_text_file(duplicate_ini_file))
-
-        mb._copy_checked_in_metadata()
-
-        # Ensure only the ini files are copied, not the tests
-        self.assertEqual(3, len(mb.fs.written_files))
-        self.assertTrue("out/a/b/c.html.ini" in mb.fs.written_files)
-        self.assertTrue("out/a/d/e.html.ini" in mb.fs.written_files)
-        self.assertTrue("out/a/tox.ini" in mb.fs.written_files)
-
-        # Also ensure that the content of the duplicate file was overwritten
-        # with the checked-in contents.
-        self.assertEqual("checked-in",
-                         mb.fs.read_text_file(duplicate_ini_file))
-
-    def test_baseline_and_expectation(self):
-        """A test has a failing baseline and a timeout expectation."""
-        test_name = "external/wpt/test.html"
-        # Create a baseline with a failing subtest, and a TIMEOUT expectation
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nFAIL some subtest\nPASS another subtest\n")
-        expectations = _make_expectation(self.port, test_name, "Timeout")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(TEST_TIMEOUT, test_and_status_dict[test_name])
-
-    def test_expectations_across_files(self):
-        """Check the inheritance order of expectations across several files."""
-        test_name = "external/wpt/test.html"
-        expectation_dict = OrderedDict()
-        _append_to_expectation_dict(expectation_dict, "TestExpectations",
-                                    test_name, "Failure")
-        _append_to_expectation_dict(expectation_dict,
-                                    "WPTOverrideExpectations", test_name,
-                                    "Timeout")
-        expectations = _make_expectation_with_dict(self.port, expectation_dict)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        # The test statuses from the two files are combined
-        self.assertEqual(TEST_FAIL | TEST_TIMEOUT,
-                         test_and_status_dict[test_name])
-
-    def test_overriding_skip_expectation_no_annotation(self):
-        """Check how a skipped test (in NeverFix) interacts with an override.
-
-        In this case, only the SKIP status is translated since skipped tests are
-        not combined with any other statuses. This is because wpt metadata
-        requires a special 'disabled' keyword to skip tests, it's not just
-        another status in the expected status list like in Chromium.
-        """
-        test_name = "external/wpt/test.html"
-        expectation_dict = OrderedDict()
-        _append_to_expectation_dict(expectation_dict, "NeverFixTests",
-                                    test_name, "Skip")
-        _append_to_expectation_dict(expectation_dict,
-                                    "WPTOverrideExpectations", test_name,
-                                    "Failure")
-        expectations = _make_expectation_with_dict(self.port, expectation_dict)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        # Skip statuses always live alone. The override status is ignored
-        # because it does not have an annotation to use checked-in metadata.
-        self.assertEqual(SKIP_TEST, test_and_status_dict[test_name])
-
-    def test_overriding_skip_expectation_with_annotation(self):
-        """A skipped tests is overridden by an annotation.
-
-        In this case, the SKIP status gets ignored because the status line in
-        the override file has the 'wpt_use_checked_in_metadata' annotation. This
-        forces us to prioritize the checked-in metadata over whatever is in
-        any of the expectation files.
-        """
-        test_name = "external/wpt/test.html"
-        expectation_dict = OrderedDict()
-        _append_to_expectation_dict(expectation_dict, "NeverFixTests",
-                                    test_name, "Skip")
-        _append_to_expectation_dict(
-            expectation_dict,
-            "WPTOverrideExpectations",
-            test_name,
-            "Pass",
-            trailing_comments=" # wpt_use_checked_in_metadata")
-        expectations = _make_expectation_with_dict(self.port, expectation_dict)
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        # Skip statuses always live alone. The override status is ignored
-        # because it does not have an annotation to use checked-in metadata.
-        self.assertEqual(USE_CHECKED_IN_METADATA,
-                         test_and_status_dict[test_name])
-
-    def test_expectation_overwrites_checked_in_metadata(self):
-        """Test an entry in an expectation overwriting checked-in metadata.
-
-        When an expectation has no annotation to use checked-in metadata then
-        the expectation will overwrite any checked-in metadata."""
-        test_name = "external/wpt/test.html"
-        expectations = _make_expectation(self.port, test_name, "Timeout")
-        mb = WPTMetadataBuilder(expectations, self.port)
-        # Set the metadata builder to use mock filesystem populated with some
-        # test data
-        mb.checked_in_metadata_dir = "src"
-        mb.metadata_output_dir = "out"
-        mock_checked_in_files = {
-            "src/external/wpt/test.html": "",
-            "src/external/wpt/test.html.ini": "checked-in metadata",
-        }
-        mb.fs = MockFileSystem(files=mock_checked_in_files)
-
-        mb._build_metadata_and_write()
-        # Ensure that the data written to the metadata file is the translated
-        # status, not the checked-in contents.
-        resulting_ini_file = os.path.join("out", "test.html.ini")
-        with mb.fs.open_text_file_for_reading(resulting_ini_file) as f:
-            data = f.read()
-        self.assertEqual(
-            "[test.html]\n  blink_expect_any_subtest_status: True # wpt_metadata_builder.py\n  expected: [TIMEOUT]\n",
-            data)
-
-    def test_use_subtest_results_flag_with_expectation(self):
-        """Test that the --use-subtest-results flag updates metadata correctly.
-
-        The --use-subtest-results flag should result in the
-        blink_expect_any_subtest_status tag not being applied to metadata for
-        any tests."""
-        test_name = "external/wpt/test.html"
-        expectations = _make_expectation(self.port, test_name, "Failure")
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        metadata_builder.use_subtest_results = True
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, TEST_FAIL)
-        self.assertEqual("test.html.ini", filename)
-        self.assertEqual("[test.html]\n  expected: [FAIL, ERROR]\n", contents)
-
-    def test_use_subtest_results_flag_with_baseline_and_timeout(self):
-        """If a test has both baseline and a non-default-pass expectation, do not
-        derive expectation from the baseline"""
-        # Create a baseline with a failing subtest, and a TIMEOUT expectation
-        test_name = "external/wpt/test.html"
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nFAIL some subtest\nPASS another subtest\n")
-
-        expectations = _make_expectation(self.port, test_name, "Timeout")
-
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        metadata_builder.use_subtest_results = True
-
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(TEST_TIMEOUT, test_and_status_dict[test_name])
-
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, test_and_status_dict[test_name])
-        self.assertEqual("test.html.ini", filename)
-        self.assertEqual("[test.html]\n  expected: [TIMEOUT]\n",
-                         contents)
-
-    def test_use_subtest_results_flag_with_baseline_and_default_pass(self):
-        """A test may have a failing baseline because there are subtest failures.
-        When the wptrunner see's the failing subtest it will return failure
-        for the test since we are not setting expectations for the subtest in
-        the metadata. However the expected result will be set to FAIL in the
-        JSON results and the CI will stay green."""
-        # Create a baseline with a failing subtest, and a default pass expectation
-        test_name = "external/wpt/test.html"
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nFAIL some subtest\nPASS another subtest\n")
-        expectations = _make_expectation(self.port, test_name,
-                                         "Pass", is_default_pass=True)
-
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-        metadata_builder.use_subtest_results = True
-
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(SUBTEST_FAIL, test_and_status_dict[test_name])
-
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, test_and_status_dict[test_name])
-        self.assertEqual("test.html.ini", filename)
-        self.assertEqual("[test.html]\n  expected: [FAIL, ERROR]\n",
-                         contents)
-
-    def test_without_use_subtest_results_flag_with_baseline(self):
-        """A test has a failing baseline."""
-        test_name = "external/wpt/test.html"
-        # Create a baseline with a failing subtest, and a TIMEOUT expectation
-        baseline_filename = self.port.expected_filename(test_name, '.txt')
-        self.host.filesystem.write_text_file(
-            baseline_filename,
-            "This is a test\nFAIL some subtest\nPASS another subtest\n")
-
-        expectations = _make_expectation(self.port, test_name, "Timeout")
-
-        metadata_builder = WPTMetadataBuilder(expectations, self.port)
-
-        test_and_status_dict = metadata_builder.get_tests_needing_metadata()
-
-        self.assertEqual(1, len(test_and_status_dict))
-        self.assertTrue(test_name in test_and_status_dict)
-        self.assertEqual(TEST_TIMEOUT,
-                         test_and_status_dict[test_name])
-
-        filename, contents = metadata_builder.get_metadata_filename_and_contents(
-            test_name, test_and_status_dict[test_name])
-        self.assertEqual("test.html.ini", filename)
-        self.assertEqual(("[test.html]\n  blink_expect_any_subtest_status: "
-                          "True # wpt_metadata_builder.py\n  "
-                          "expected: [TIMEOUT]\n"), contents)
diff --git a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py
index f5215554..6d901eb0 100644
--- a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py
+++ b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py
@@ -39,9 +39,8 @@
 from blinkpy.web_tests.models.test_expectations import (TestExpectations,
                                                         ParseError)
 from blinkpy.web_tests.models.typ_types import ResultType
-from blinkpy.web_tests.port.android import (
-    PRODUCTS_TO_EXPECTATION_FILE_PATHS, ANDROID_DISABLED_TESTS,
-    ANDROID_WEBLAYER)
+from blinkpy.web_tests.port.android import (ANDROID_DISABLED_TESTS,
+                                            ANDROID_WEBLAYER)
 from blinkpy.web_tests.port.factory import platform_options
 from blinkpy.web_tests.port.linux import LinuxPort
 from blinkpy.web_tests.port.mac import MacPort
@@ -73,7 +72,6 @@
 
     # Add all extra expectation files to be linted.
     options.additional_expectations.extend(
-        list(PRODUCTS_TO_EXPECTATION_FILE_PATHS.values()) +
         [ANDROID_DISABLED_TESTS] + [
             host.filesystem.join(port.web_tests_dir(),
                                  'WPTOverrideExpectations'),
@@ -114,9 +112,6 @@
 def _check_test_existence(host, port, path, expectations):
     failures = []
     warnings = []
-    if path in PRODUCTS_TO_EXPECTATION_FILE_PATHS.values():
-        return [], []
-
     for exp in expectations:
         if not exp.test:
             continue
diff --git a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py
index e9b8862..b14fd6af 100644
--- a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py
+++ b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py
@@ -35,7 +35,6 @@
 from blinkpy.common.path_finder import PathFinder
 from blinkpy.common.system.log_testing import LoggingTestCase
 from blinkpy.web_tests import lint_test_expectations
-from blinkpy.web_tests.port.android import PRODUCTS_TO_EXPECTATION_FILE_PATHS
 from blinkpy.web_tests.port.base import VirtualTestSuite
 from blinkpy.web_tests.port.test import MOCK_WEB_TESTS
 
@@ -283,26 +282,6 @@
         for pattern, failure in zip(expected_non_existence, failures):
             self.assertIn('Test does not exist: %s' % pattern, failure)
 
-    def test_only_wpt_in_android_override_files(self):
-        options = optparse.Values({
-            'additional_expectations': [],
-            'platform': 'test',
-            'debug_rwt_logging': False
-        })
-        host = MockHost()
-        port = host.port_factory.get(options.platform, options=options)
-        raw_expectations = ('# results: [ Failure ]\n'
-                            'external/wpt/test.html [ Failure ]\n'
-                            'non-wpt/test.html [ Failure ]\n')
-        for path in PRODUCTS_TO_EXPECTATION_FILE_PATHS.values():
-            host.filesystem.write_text_file(path, raw_expectations)
-        host.port_factory.get = lambda platform=None, options=None: port
-        host.port_factory.all_port_names = lambda platform=None: [port.name()]
-        port.test_exists = lambda _: True
-        port.tests = lambda _: {'external/wpt/test.html', 'non-wpt/test.html'}
-        failures, _ = lint_test_expectations.lint(host, options)
-        self.assertTrue(all('is for a non WPT test' in f for f in failures))
-
     def test_lint_globs(self):
         options = optparse.Values({
             'additional_expectations': [],
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/android.py b/third_party/blink/tools/blinkpy/web_tests/port/android.py
index b22d0ae..e2d998d 100644
--- a/third_party/blink/tools/blinkpy/web_tests/port/android.py
+++ b/third_party/blink/tools/blinkpy/web_tests/port/android.py
@@ -86,15 +86,6 @@
 # Android web tests directory, which contains override expectation files
 ANDROID_WEB_TESTS_DIR = os.path.join(get_blink_dir(), 'web_tests', 'android')
 
-PRODUCTS_TO_EXPECTATION_FILE_PATHS = {
-    ANDROID_WEBLAYER: os.path.join(
-        ANDROID_WEB_TESTS_DIR, 'WebLayerWPTOverrideExpectations'),
-    ANDROID_WEBVIEW: os.path.join(
-        ANDROID_WEB_TESTS_DIR, 'WebviewWPTExpectations'),
-    CHROME_ANDROID: os.path.join(
-        ANDROID_WEB_TESTS_DIR, 'ChromeWPTOverrideExpectations'),
-}
-
 # Disabled WPT tests on Android
 ANDROID_DISABLED_TESTS = os.path.join(
     ANDROID_WEB_TESTS_DIR, 'AndroidWPTNeverFixTests')
diff --git a/third_party/blink/tools/build_wpt_metadata.py b/third_party/blink/tools/build_wpt_metadata.py
deleted file mode 100755
index 67d0242e..0000000
--- a/third_party/blink/tools/build_wpt_metadata.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env vpython3
-# Copyright 2019 The Chromium Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import argparse
-import optparse
-import sys
-
-from blinkpy.common.host import Host
-from blinkpy.web_tests.port.android import (
-    AndroidPort, PRODUCTS)
-from blinkpy.w3c.wpt_metadata_builder import WPTMetadataBuilder
-from blinkpy.web_tests.models.test_expectations import TestExpectations
-
-
-def main(args):
-    parser = argparse.ArgumentParser(description=__doc__)
-    parser.add_argument(
-        "--additional-expectations",
-        action="append",
-        help="Paths to additional expectations files for WPT.")
-    parser.add_argument(
-        "--android-product",
-        default=None,
-        choices=PRODUCTS,
-        help="Android product argument for wpt runner.")
-    parser.add_argument(
-        '--ignore-default-expectations',
-        action='store_true',
-        help='Do not use the default set of test expectations files.'
-             ' i.e TestExpectations, NeverFixTests, etc...')
-
-    known_args, rest_args = parser.parse_known_args(args)
-    options = optparse.Values(vars(known_args))
-    host = Host()
-
-    if known_args.android_product:
-        port = AndroidPort(
-            host, product=known_args.android_product, options=options)
-    else:
-        port = host.port_factory.get(options=options)
-
-    expectations = TestExpectations(port)
-    metadata_builder = WPTMetadataBuilder(expectations, port)
-    sys.exit(metadata_builder.run(rest_args))
-
-
-if __name__ == '__main__':
-    main(sys.argv[1:])
diff --git a/third_party/blink/tools/run_wpt_tests.py b/third_party/blink/tools/run_wpt_tests.py
index 967f467..eb77a9f 100755
--- a/third_party/blink/tools/run_wpt_tests.py
+++ b/third_party/blink/tools/run_wpt_tests.py
@@ -15,11 +15,9 @@
 from blinkpy.common import path_finder
 from blinkpy.common.path_finder import PathFinder
 from blinkpy.web_tests.port.android import (
-    PRODUCTS_TO_EXPECTATION_FILE_PATHS,
     ANDROID_WEBLAYER,
     ANDROID_WEBVIEW,
     CHROME_ANDROID,
-    ANDROID_DISABLED_TESTS,
 )
 
 path_finder.add_testing_dir_to_sys_path()
@@ -100,10 +98,6 @@
             self._parser.error(str(exc))
 
     @property
-    def _metadata_dir(self):
-        return self.fs.join(self._tmp_dir, 'metadata')
-
-    @property
     def _upstream_dir(self):
         return self.fs.join(self._tmp_dir, 'upstream_wpt')
 
@@ -164,11 +158,6 @@
                 self.path_finder.path_from_web_tests("wptrunner.blink.ini")
             ])
 
-        # if metadata was created then add the metadata directory
-        # to the list of wpt arguments
-        if self._metadata_dir:
-            rest_args.extend(['--metadata', self._metadata_dir])
-
         if self.options.flag_specific:
             configs = self.port.flag_specific_configs()
             rest_args.extend('--binary-arg=%s' % arg
@@ -184,17 +173,6 @@
         rest_args.extend(self.options.wpt_args)
         return rest_args
 
-    def _maybe_build_metadata(self):
-        metadata_builder_cmd = [
-            self.select_python_executable(),
-            self.path_finder.path_from_blink_tools('build_wpt_metadata.py'),
-            '--metadata-output-dir=%s' % self._metadata_dir,
-        ]
-        if self.options.ignore_default_expectations:
-            metadata_builder_cmd += ['--ignore-default-expectations']
-        metadata_builder_cmd.extend(self.product.metadata_builder_args)
-        return common.run_command(metadata_builder_cmd)
-
     @property
     def log_level(self):
         if self.options.verbose >= 2:
@@ -210,14 +188,6 @@
             # after the tests complete. Otherwise, `mkdtemp()` raise an error.
             stack.callback(self.fs.rmtree, self._tmp_dir)
             stack.enter_context(self.product.test_env())
-            metadata_command_ret = self._maybe_build_metadata()
-            if metadata_command_ret != 0:
-                return metadata_command_ret
-
-            # If there is no metadata then we need to create an
-            # empty directory to pass to wptrunner
-            if not os.path.exists(self._metadata_dir):
-                os.makedirs(self._metadata_dir)
             if self.options.use_upstream_wpt:
                 logger.info("Using upstream wpt, cloning to %s ..." %
                             self._upstream_dir)
@@ -267,7 +237,6 @@
     def add_extra_arguments(self, parser):
         super().add_extra_arguments(parser)
         parser.description = __doc__
-        self.add_metadata_arguments(parser)
         self.add_binary_arguments(parser)
         self.add_test_arguments(parser)
         if _ANDROID_ENABLED:
@@ -321,25 +290,6 @@
                             help=('Use this tag to not run wptrunner in'
                                   'headless mode'))
 
-    def add_metadata_arguments(self, parser):
-        group = parser.add_argument_group(
-            'Metadata Builder',
-            'Options for building WPT metadata from web test expectations.')
-        group.add_argument('--additional-expectations',
-                           metavar='EXPECTATIONS_FILE',
-                           action='append',
-                           default=[],
-                           help='Paths to additional test expectations files.')
-        group.add_argument(
-            '--ignore-default-expectations',
-            action='store_true',
-            help='Do not use the default set of TestExpectations files.')
-        group.add_argument('--ignore-browser-specific-expectations',
-                           action='store_true',
-                           default=False,
-                           help='Ignore browser-specific expectation files.')
-        return group
-
     def add_binary_arguments(self, parser):
         group = parser.add_argument_group(
             'Binary Configuration',
@@ -509,19 +459,6 @@
             args.append('--webdriver-binary=%s' % webdriver)
         return args
 
-    @property
-    def metadata_builder_args(self):
-        """list[str]: Arguments to add to the WPT metadata builder command."""
-        return [
-            '--additional-expectations=%s' % expectation
-            for expectation in self.expectations
-        ]
-
-    @property
-    def expectations(self):
-        """list[str]: Paths to additional expectations to build metadata for."""
-        return list(self._options.additional_expectations)
-
     def get_version(self):
         """Get the product version, if available."""
         return None
@@ -546,27 +483,6 @@
         ])
         return wpt_args
 
-    @property
-    def metadata_builder_args(self):
-        args = list(super().metadata_builder_args)
-        # TODO(crbug/1299650): Strip trailing '/'. Otherwise,
-        # build_wpt_metadata.py will not build correctly filesystem paths
-        # correctly.
-        path_to_wpt_root = self._host.filesystem.normpath(
-            self._path_finder.path_from_wpt_tests())
-        args.extend([
-            '--no-process-baselines',
-            '--checked-in-metadata-dir=%s' % path_to_wpt_root,
-        ])
-        return args
-
-    @property
-    def expectations(self):
-        expectations = list(super().expectations)
-        expectations.append(
-            self._path_finder.path_from_web_tests('WPTOverrideExpectations'))
-        return expectations
-
 
 class Chrome(ChromeBase):
     name = 'chrome'
@@ -617,13 +533,6 @@
         ])
         return wpt_args
 
-    @property
-    def expectations(self):
-        expectations = list(super().expectations)
-        expectations.append(
-            self._path_finder.path_from_web_tests('WPTOverrideExpectations'))
-        return expectations
-
 
 @contextlib.contextmanager
 def _install_apk(device, path):
@@ -667,25 +576,6 @@
             wpt_args.append('--adb-binary=%s' % self._options.adb_binary)
         return wpt_args
 
-    @property
-    def metadata_builder_args(self):
-        args = list(super().metadata_builder_args)
-        args.extend([
-            '--android-product=%s' % self.name,
-            '--use-subtest-results',
-        ])
-        return args
-
-    @property
-    def expectations(self):
-        expectations = list(super().expectations)
-        expectations.append(ANDROID_DISABLED_TESTS)
-        maybe_path = PRODUCTS_TO_EXPECTATION_FILE_PATHS.get(self.name)
-        if (maybe_path
-                and not self._options.ignore_browser_specific_expectations):
-            expectations.append(maybe_path)
-        return expectations
-
     def get_version(self):
         version_provider = self.get_version_provider_package_name()
         if self.devices and version_provider:
diff --git a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
index 07c4a271..d043da8 100644
--- a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
+++ b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
@@ -449,6 +449,10 @@
 crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-fieldset-001.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-fieldset-002.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-fieldset-003.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-001.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-002.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-003.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-004.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-grid-001.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-grid-002.html [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox/alignment/flex-align-baseline-grid-003.html [ Failure ]
@@ -486,6 +490,8 @@
 crbug.com/591099 external/wpt/css/css-flexbox/flexbox-align-self-vert-rtl-004.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox/flexbox-align-self-vert-rtl-005.xhtml [ Failure ]
 crbug.com/591099 external/wpt/css/css-flexbox/flexbox-baseline-align-self-baseline-vert-001.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002.html [ Failure ]
+crbug.com/591099 external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002.html [ Failure ]
 crbug.com/553838 external/wpt/css/css-flexbox/flexbox-min-height-auto-002a.html [ Failure ]
 crbug.com/553838 external/wpt/css/css-flexbox/flexbox-min-height-auto-002c.html [ Failure ]
 crbug.com/1132627 external/wpt/css/css-flexbox/flexbox-min-width-auto-002a.html [ Failure ]
@@ -595,6 +601,10 @@
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-fieldset-001.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-fieldset-002.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-fieldset-003.html [ Failure ]
+crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-flex-001.html [ Failure ]
+crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-flex-002.html [ Failure ]
+crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-flex-003.html [ Failure ]
+crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-flex-004.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-grid-001.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-grid-002.html [ Failure ]
 crbug.com/1045599 external/wpt/css/css-grid/alignment/grid-align-baseline-grid-003.html [ Failure ]
@@ -2115,7 +2125,7 @@
 crbug.com/1121942 printing/fixed-positioned-overflow-scroll.html [ Pass ]
 crbug.com/1121942 printing/fixedpos-in-multicol.html [ Failure ]
 crbug.com/1121942 printing/flexbox-with-overflow-in-bottom-aligned-fixedpos.html [ Pass ]
-crbug.com/1121942 printing/multi-page-background.html [ Pass ]
+crbug.com/1121942 printing/multi-page-background.html [ Failure ]
 crbug.com/1121942 printing/width-overflow.html [ Pass ]
 crbug.com/1147859 virtual/css-highlight-inheritance/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-001.html [ Failure ]
 crbug.com/1147859 virtual/css-highlight-inheritance/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-002.html [ Failure ]
diff --git a/third_party/blink/web_tests/SmokeTests/Mac.txt b/third_party/blink/web_tests/SmokeTests/Mac.txt
index fdb9f4f..13177cb2 100644
--- a/third_party/blink/web_tests/SmokeTests/Mac.txt
+++ b/third_party/blink/web_tests/SmokeTests/Mac.txt
@@ -49,7 +49,6 @@
 css3/blending/svg-blend-multiply.html
 css3/filters/backdrop-filter-boundary.html
 css3/filters/composited-layer-bounds-after-sw-blur-animation.html
-css3/flexbox/flexbox-baseline.html
 custom-elements/form-validation-bubble-appearance.html
 editing/caret/caret-color.html
 editing/caret/in-multicol-child.html
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index c2fb7e7..5503be402 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -2306,7 +2306,6 @@
 crbug.com/1121942 printing/fixed-positioned-headers-and-footers-larger-than-page.html [ Crash Failure ]
 crbug.com/1121942 printing/fixed-positioned-overflow-scroll.html [ Crash Failure ]
 crbug.com/1121942 printing/flexbox-with-overflow-in-bottom-aligned-fixedpos.html [ Crash Failure ]
-crbug.com/1121942 printing/multi-page-background.html [ Failure ]
 crbug.com/1121942 printing/page-break-avoid.html [ Failure ]
 crbug.com/377696 printing/setPrinting.html [ Failure ]
 crbug.com/1121942 printing/width-overflow.html [ Failure ]
@@ -3223,8 +3222,6 @@
 
 # ====== New tests from wpt-importer added here ======
 crbug.com/626703 [ Linux ] external/wpt/encoding/unsupported-labels.window.html [ Failure Timeout ]
-crbug.com/626703 [ Mac11 ] external/wpt/encoding/unsupported-labels.window.html [ Failure Timeout ]
-crbug.com/626703 [ Mac12 ] external/wpt/encoding/unsupported-labels.window.html [ Failure Timeout ]
 crbug.com/626703 [ Win ] external/wpt/encoding/unsupported-labels.window.html [ Failure Timeout ]
 crbug.com/626703 external/wpt/resize-observer/notify.html [ Timeout ]
 crbug.com/626703 external/wpt/resize-observer/svg.html [ Timeout ]
@@ -7084,3 +7081,4 @@
 
 # Sheriff 2022-09-29
 crbug.com/1368855 external/wpt/longtask-timing/containerNames.html [ Failure Pass ]
+crbug.com/1369642 [ Mac ] external/wpt/encoding/unsupported-labels.window.html [ Failure Timeout ]
diff --git a/third_party/blink/web_tests/WPTOverrideExpectations b/third_party/blink/web_tests/WPTOverrideExpectations
deleted file mode 100644
index 7bec3cf..0000000
--- a/third_party/blink/web_tests/WPTOverrideExpectations
+++ /dev/null
@@ -1,234 +0,0 @@
-# results: [ Timeout Crash Pass Failure Slow Skip ]
-
-# This file lists test expectations for WPT tests running ONLY under the wptrunner code path in
-# Chromium. This file is used in two ways:
-# 1) To set failure expectations for wptrunner tests, exactly as TestExpectations are used but
-#    which affect wptrunner instead of run_web_tests
-# 2) To explicitly state that TestExpectations entries for a wptrunner test should be ignored
-#    in favour of wptrunner-specific "metadata" files, which are checked-in to the source tree
-#    and named "<test>.ini". This is done by adding a line in this file with status set to [ Pass ]
-#    and with a trailing comment that says "# wpt_use_checked_in_metadata".
-
-# There may be duplicate entries between this file and other expectations, which is acceptable.
-# See go/wpt-in-chromium-ci for more info on the overall project.
-
-# Bluetooth not supported in Chrome as per
-# https://github.com/web-platform-tests/wpt/blob/master/bluetooth/README.md#web-bluetooth-testing
-external/wpt/bluetooth/* [ Skip ]
-
-external/wpt/infrastructure/testdriver/actions/actionsWithKeyPressed.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/crossOrigin.sub.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/elementPosition.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/elementTiming.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/eventOrder.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/iframe.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/mouseClickCount.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/multiDevice.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/multiTouchPoints.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/multiTouchPointsWithPause.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/pause.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/penPointerEventProperties.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/penPointerEvents.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/textEditCommands.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/touchPointerEventProperties.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/infrastructure/testdriver/actions/wheelScroll.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/idlharness.window.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-cut-paste.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-exec-command.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-backspace.tentative.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-deleting-in-list-items.tentative.html?Backspace,ol [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-deleting-in-list-items.tentative.html?Backspace,ul [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-deleting-in-list-items.tentative.html?Delete,ol [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-deleting-in-list-items.tentative.html?Delete,ul [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-during-and-after-dispatch.tentative.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-forwarddelete.tentative.html [ Skip ]
-external/wpt/input-events/input-events-get-target-ranges-joining-dl-element-and-another-list.tentative.html?Backspace [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-joining-dl-element-and-another-list.tentative.html?Delete [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-joining-dl-elements.tentative.html?Backspace [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-joining-dl-elements.tentative.html?Delete [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-non-collapsed-selection.tentative.html?Backspace [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-non-collapsed-selection.tentative.html?Delete [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges-non-collapsed-selection.tentative.html?TypingA [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-get-target-ranges.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/input-events-typing.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/input-events/select-event-drag-remove.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/idlharness.window.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/inheritance.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/mouse-pointer-boundary-events-for-shadowdom.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_attributes_hoverable_pointers.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_auxclick_is_a_pointerevent.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_boundary_events_in_capturing.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_capture_mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_capture_suppressing_mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_click_during_capture.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_click_is_a_pointerevent.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_coalesced_events_attributes.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_constructor.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_contextmenu_is_a_pointerevent.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_disabled_form_control.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_element_haspointercapture.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_element_haspointercapture_release_pending_capture.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_iframe-touch-action-none_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_lostpointercapture_for_disconnected_node.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_lostpointercapture_for_disconnected_node_in_shadow_dom.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_lostpointercapture_for_disconnected_shadow_host.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_lostpointercapture_is_first.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_mouse_capture_change_hover.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_mouse_pointercapture_inactivate_pointer.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_on_event_handlers.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointercapture-in-custom-element.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointercapture-in-shadow-dom.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointercapture-not-lost-in-chorded-buttons.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointercapture_in_frame.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointerenter_does_not_bubble.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointerleave_descendant_over.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointerleave_descendants.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointerleave_does_not_bubble.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointermove.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointermove_isprimary_same_as_pointerdown.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointermove_on_chorded_mouse_button.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointerout_pen.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointerout_received_once.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_pointerrawupdate.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_releasepointercapture_events_to_original_target.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_releasepointercapture_invalid_pointerid.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_releasepointercapture_onpointerup_mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_releasepointercapture_pointerup_mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_releasepointercapture_pointerup_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_releasepointercapture_release_right_after_capture.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_root_computed_style.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_root_hit_test.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_click.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_drag.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_setpointercapture_disconnected.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_setpointercapture_inactive_button_mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_setpointercapture_invalid_pointerid.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_setpointercapture_override_pending_capture_element.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_setpointercapture_pointerup_mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_setpointercapture_pointerup_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_setpointercapture_relatedtarget.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_setpointercapture_to_same_element_twice.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_suppress_compat_events_on_click.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_tiltX_tiltY_to_azimuth_altitude.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-button-none-test_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-illegal.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-inherit_child-none_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-keyboard.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-none-css_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-none-on-body-when-style-propagates-to-viewport_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-svg-none-test_touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-action-verification.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerevent_touch-adjustment_click_target.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/compat/pointerevent_compat-mouse-events-when-removing-nodes.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/compat/pointerevent_mouse-on-object.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/compat/pointerevent_mouse-pointer-on-scrollbar.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/compat/pointerevent_mouse-pointer-updown-events.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/compat/pointerevent_mouseevent_key_pressed.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/compat/pointerevent_touch-action-verification.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/parsing/touch-action-computed.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/parsing/touch-action-invalid.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/parsing/touch-action-valid.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerlock/pointerevent_coordinates_when_locked.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerlock/pointerevent_getCoalescedEvents_when_pointerlocked.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerlock/pointerevent_movementxy.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_supercedes_capture.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/touch-events/historical.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/touch-events/idlharness.window.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/touch-events/multi-touch-interactions.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/touch-events/multi-touch-interfaces.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/touch-events/single-touch.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/touch-events/touch-globaleventhandler-interface.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/touch-events/touch-retargeting.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/touch-events/touch-touchevent-constructor.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/idlharness.window.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/click/auxclick_event.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/click/click_event_target_child_parent.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/click/click_event_target_siblings.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/click/click_events_on_input.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/click/dblclick_event_mouse.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/constructors/inputevent-constructor.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/interface/click-event.htm [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/keyboard/modifier-keys-combinations.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/keyboard/modifier-keys.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/legacy/Event-subclasses-init.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/legacy-domevents-tests/approved/ProcessingInstruction.DOMCharacterDataModified.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/legacy-domevents-tests/approved/dispatchEvent.click.checkbox.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/legacy-domevents-tests/approved/domnodeinserted.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/legacy-domevents-tests/approved/stopImmediatePropagation.effect.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/legacy-domevents-tests/approved/stopPropagation.deferred.effect.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/legacy-domevents-tests/submissions/Microsoft/converted/EventListener.dispatch.new.event.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/mouse/layout_change_should_fire_mouseover.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/mouse/mouse_buttons_back_forward.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/mouse/mouseevent_move_button.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/order-of-events/focus-events/focus-automated-blink-webkit.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/order-of-events/focus-events/focus-management-expectations.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/order-of-events/focus-events/focus.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/order-of-events/mouse-events/click-cancel.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/order-of-events/mouse-events/mouseover-out.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/order-of-events/mouse-events/wheel-basic.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/uievents/order-of-events/mouse-events/wheel-scrolling.html [ Pass ] # wpt_use_checked_in_metadata
-
-external/wpt/webauthn/createcredential-badargs-authnrselection.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-badargs-challenge.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-badargs-rp.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-badargs-user.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-excludecredentials.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-extensions.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-getpublickey.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-large-blob-not-supported.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-large-blob-supported.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-passing.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-pubkeycredparams.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-resident-key.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/createcredential-timeout.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/getcredential-badargs-rpid.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/getcredential-badargs-userverification.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/getcredential-extensions.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/getcredential-large-blob-not-supported.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/getcredential-large-blob-supported.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/getcredential-passing.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/getcredential-rk-passing.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/getcredential-timeout.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/idlharness-manual.https.window.js [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/idlharness.https.window.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/securecontext.http.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/securecontext.https.html [ Pass ] # wpt_use_checked_in_metadata
-external/wpt/webauthn/webauthn-testdriver-basic.https.html [ Pass ] # wpt_use_checked_in_metadata
-
-crbug.com/1208893 external/wpt/pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_attributes_nohover_pointers.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_change-touch-action-onpointerdown_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_click_is_a_pointerevent_multiple_clicks.html?touch [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_fractional_coordinates.html?touch [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_pointercancel_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-pan-down-css_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-pan-left-css_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-pan-right-css_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-pan-up-css_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-pan-x-css_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-pan-y-css_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-span-none-test_touch.html [ Failure ]
-crbug.com/1208893 external/wpt/pointerevents/pointerevent_touch-action-table-none-test_touch.html [ Failure ]
-
-crbug.com/1208893 external/wpt/webauthn/createcredential-minpinlength.https.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/ChromeWPTOverrideExpectations b/third_party/blink/web_tests/android/ChromeWPTOverrideExpectations
deleted file mode 100644
index 8d8051e9..0000000
--- a/third_party/blink/web_tests/android/ChromeWPTOverrideExpectations
+++ /dev/null
@@ -1,1904 +0,0 @@
-# results: [ Failure Crash Timeout Pass Skip ]
-# conflict_resolution: Override
-
-# This file will be used to add override expectations for WPT tests when running on Clank.
-# Expectations with bug crbug.com/1050754 were created as preliminary expectations in CL
-# crrev.com/c/2070826. Several test expectations below will be moved to the AndroidWPTNeverFixTests
-# file. When the test failures below are triaged, new bugs will be created and we will change the
-# bug for the expectation to the new bug.
-
-# Test fails when run on Android.
-crbug.com/1197454 external/wpt/document-policy/experimental-features/unsized-media.tentative.https.sub.html [ Failure ]
-
-# https://crbug.com/1126079
-crbug.com/1126079 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html [ Crash Pass ]
-
-# https://crbug.com/1145401
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/getAvailability.https.html [ Failure ]
-
-# Several scroll animations tests fail in WebLayer and Clank.
-crbug.com/1198063 external/wpt/scroll-animations/css/at-scroll-timeline-start-end.html [ Failure ]
-crbug.com/1198063 external/wpt/scroll-animations/current-time-root-scroller.html [ Failure ]
-crbug.com/1198063 external/wpt/scroll-animations/idlharness.window.html [ Failure ]
-crbug.com/1198063 external/wpt/scroll-animations/progress-based-current-time.tenative.html [ Failure ]
-crbug.com/1198063 external/wpt/scroll-animations/scroll-timeline-snapshotting.html [ Timeout ]
-
-# https://crbug.com/154571: SharedWorker is not supported on Android.
-crbug.com/1050754 external/wpt/background-fetch/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1190392 external/wpt/trusted-types/WorkerGlobalScope-eval.html [ Failure ]
-crbug.com/1190392 external/wpt/trusted-types/WorkerGlobalScope-importScripts.html [ Failure ]
-crbug.com/1190392 external/wpt/trusted-types/worker-constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/content-index/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/sandbox/shared-worker-sandbox.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/script-src/script-src-strict_dynamic_worker.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/script-src/worker-data-set-timeout.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/script-src/worker-importscripts.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/script-src/worker-set-timeout.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-child.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-list.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-none.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-self.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-child-fallback-blocked.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-child-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-default-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-script-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-self-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/microtask-queuing/queue-microtask-exceptions.any.sharedworker.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/microtask-queuing/queue-microtask.any.sharedworker.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.sharedworker.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html [ Failure ]
-
-# Failing background-fetch tests.
-crbug.com/882282 external/wpt/background-fetch/fetch.https.window.html [ Failure Pass Timeout ]
-
-# crbug.com/178097: navigator.registerProtocolHandler is not available on Android.
-crbug.com/1198573 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.https.window.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html [ Failure ]
-
-# Failing WebAppApi tests on Clank and WebLayer on Android
-crbug.com/1198573 external/wpt/html/webappapis/dynamic-markup-insertion/document-write/047.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/history.window.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/reload.window.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.worker.html [ Failure Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/runtime-error-in-setInterval.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/runtime-error-in-setTimeout.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/user-prompts/cannot-show-simple-dialogs/confirm-different-origin-frame.sub.html [ Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/user-prompts/cannot-show-simple-dialogs/prompt-different-origin-frame.sub.html [ Pass ]
-
-# Failing CSP tests on Clank and WebLayer on Android
-crbug.com/1198079 external/wpt/content-security-policy/embedded-enforcement/subsumption_algorithm-source_list-wildcards.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worker-import.http.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worker-import.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-animation.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-audio.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-layout.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-paint-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-paint.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-paint-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.http.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worker-import.http.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worker-import.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-animation.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-audio.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-layout.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-paint-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-paint.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/worklet-paint-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/worker-src-self/worker-import.http.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/worker-src-self/worker-import.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/navigate-to/spv-only-sent-to-initiator.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/object-src/object-src-url-allowed.html [ Crash Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/object-src/object-src-url-embed-allowed.html [ Crash Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/object-src/object-src-url-redirect-allowed.html [ Crash Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/sandbox/service-worker-sandbox.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-1.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-3.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-7.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-9.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/blockeduri-eval.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/blockeduri-inline.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/idlharness.window.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/inside-shared-worker.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/style-src/style-blocked.sub.html [ Failure ]
-
-# Reporting IDL failures on Android.
-crbug.com/1198081 external/wpt/reporting/idlharness.any.html [ Failure ]
-crbug.com/1198081 external/wpt/reporting/idlharness.any.worker.html [ Failure ]
-
-# Signed Exchange failures on Android.
-crbug.com/1198085 external/wpt/signed-exchange/check-cert-request.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/fallback-to-another-sxg.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok-no-referrer.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok-origin-referrer.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/service-workers/sxg-sw-register-after-fallback.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/service-workers/sxg-sw-register.tentative.https.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/subresource/sxg-subresource-header-integrity-mismatch.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/subresource/sxg-subresource.tentative.sub.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-data-cert-url.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-location-fragment.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-location.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-merkle-integrity-error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-navigation-timing.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-prefetch.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-policy-header.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-utf8-inner-url.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-variants-match.tentative.html [ Failure ]
-
-# WebCodecs failures on Android.
-crbug.com/1198089 external/wpt/webcodecs/video-frame.any.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/video-frame.any.worker.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-canvasImageSource.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-createImageBitmap.any.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-createImageBitmap.any.worker.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-texImage.any.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-texImage.any.worker.html [ Failure ]
-
-# Test seems to be flaky on both Chrome and WebLayer.
-crbug.com/1177918 external/wpt/input-events/input-events-get-target-ranges.html [ Failure Pass ]
-
-# Layout Instability tests are not calibrated for mobile screens.
-crbug.com/1191142 external/wpt/layout-instability/absolute-child-shift-with-parent-contain.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/absolute-child-shift-with-parent-negative-overflow.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/absolute-child-shift-with-parent-overflow.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/body-display-change.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/buffer-layout-shift.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/buffered-flag.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/child-shift-with-parent-overflow-hidden.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/child-shift-with-parent-overflow-x-clip.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/child-shift-with-parent.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/composited-element-movement.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/content-visibility-auto-offscreen.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/expand-above-viewport.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/fixed-position-move.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/input-timestamp.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/move-distance-clamped.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/move-transformed.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/multi-clip-visual-rect.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/opacity-zero-layout-and-visible.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/partially-clipped-visual-rect.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/pointerdown-becomes-scroll.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/pointerdown-becomes-tap.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/pointermove-becomes-drag.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/recent-input.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/rtl-distance.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/shift-into-viewport.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/shift-outside-viewport.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/shift-while-scrolled.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/shift-with-overflow-status-change.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/simple-block-movement.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/sources-enclosure.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/sources-maximpact.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/sources.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/sticky-descendant-move.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/transform.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/visibility-hidden-layout-and-visible.html [ Skip ]
-
-# Add untriaged failures in this block
-crbug.com/1050754 external/wpt/FileAPI/file/send-file-form-punctuation.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/FileAPI/url/url-charset.window.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/FileAPI/url/url-in-tags-revoke.window.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/IndexedDB/bindings-inject-values-bypass-chain.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/IndexedDB/file_support.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-store-cursors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-store.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/transaction-abort-generator-revert.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/inactive-timeline.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/animation-worklet/scroll-timeline-writing-modes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-absent-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-added-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-off-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-on-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-on-off-on-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-removed-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/cross-origin-iframe-getAvailability.sub.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/characteristicProperties.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/service-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/readValue/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/readValue/read-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/writeValue/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/writeValue/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-before-watchAdvertisements.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-pending-operation.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-signal-stops-events.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-subsequent-watchAdvertisements-call-stops-events.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/advertisementreceived-event-fired.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/concurrent-watchAdvertisements-calls.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/service-and-manufacturer-data-filtered-from-event.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/subsequent-watchAdvertisements-call.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/watching-two-devices-abort-one-watchAdvertisements.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/watching-two-devices.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/granted-devices-with-services.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/no-granted-devices.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/returns-same-bluetooth-device-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-service-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-reconnect-during.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-answers.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-cache-revalidation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-feature-policy.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-no-feature-policy.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-subresource-redirect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-syncxhr-redirect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/same-origin-navigation-no-accept-ch.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/client-hints/critical-ch/subresource.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/sec-ch-ua.http.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/client-hints/sec-ch-ua.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/client-hints/service-workers/intercept-request.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/client-hints/service-workers/new-request.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/client-hints/service-workers/passthrough-request.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-html-script-removal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-svg-script-removal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-blobs-read-blobs.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-html-read-html.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-image-read-image.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-svg-read-svg.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/compat/idlharness.window.html [ Pass ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/compression/compression-including-empty-chunk.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-multiple-chunks.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-output-length.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-stream.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-buffersource.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-constructor-error.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-correct-input.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-empty-input.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-split-chunk.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-uint8array-output.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/form-action/form-action-src-allowed-target-blank.sub.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/inheritance/blob-url-inherits-from-initiator.sub.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/inheritance/history.sub.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/inheritance/window-open-local-after-network-scheme.sub.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/inheritance/window.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/prefetch-src/prefetch-header-allowed.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_subscribe_arguments.tentative.https.any.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/idlharness.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/form-get-blank-reload.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/form-get-blank.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/cookies/samesite/form-post-blank-reload.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/form-post-blank.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/setcookie-lax.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/cookies/samesite/window-open-reload.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/window-open.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/cookies/schemeful-same-site/schemeful-navigation.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/cookies/value/value-ctl.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/value/value.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-width-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/inheritance.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-cascade/all-prop-initial-xml.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-system-colors.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-contain/contain-size-grid-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-contain/contain-size-grid-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-contain/content-visibility/content-visibility-068.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-contain/content-visibility/content-visibility-070.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-flexbox/flex-aspect-ratio-img-column-017.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/fallback-url-to-local.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/font-face-range-order.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-items/grid-minimum-size-grid-items-021.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-layout-api/sync-layout-microtasks.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-logical/inheritance.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/getclientrects-000.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/getclientrects-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/inheritance.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/parsing/column-rule-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/overflow-clip-margin-intersection-observer.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/overflow-codependent-scrollbars.html [ Pass ]
-crbug.com/1050754 external/wpt/css/css-overflow/overflow-padding.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-propagation-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-propagation-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-propagation-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-propagation-007.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-rtl-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-vertical-lr-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-vertical-rl-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-absolute-replaced-minmax.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/sticky/position-sticky-nested-bottom.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/sticky/position-sticky-nested-right.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/unit-cycles.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-ruby/line-spacing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/abspos-contributes-to-static-parent-bounds.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/focus-prioritized.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/fragment-scrolling-anchors.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/history-restore-anchors.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/negative-layout-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/position-change-heuristic-in-nested-scroll-box.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/position-change-heuristic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/reading-scroll-forces-anchoring.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/scroll-snap-type-on-root-element.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-at-user-scroll-end.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-margin-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/tab-size-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-detection-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-detection-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-expansion-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-expansion-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/tab-size/tab-size.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/trailing-space-position-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/transform-scale-hittest.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-effect.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/properties-value-inherit-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/animation/outline-width-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-ui/text-overflow-023.html [ Pass ]
-crbug.com/1050754 external/wpt/css/css-values/viewport-units-css2-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/wm-propagation-body-scroll-offset-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/CaretPosition-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/cssom-getBoundingClientRect-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/cssom-view-img-attributes-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-smooth.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-smooth.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollLeft-of-scroller-with-wider-scrollbar.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollintoview.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/cssstyledeclaration-properties.html [ Pass ]
-crbug.com/1050754 external/wpt/css/cssom/getComputedStyle-width-scroll.tentative.html [ Pass ]
-crbug.com/1050754 external/wpt/css/geometry/DOMMatrix2DInit-validate-fixup.html [ Failure ]
-crbug.com/1050754 external/wpt/custom-elements/reactions/HTMLInputElement.html [ Failure ]
-crbug.com/1050754 external/wpt/custom-elements/reactions/HTMLParamElement.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/document-policy/experimental-features/sync-script.tentative.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/document-policy/reporting/oversized-images-reporting-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.html [ Pass ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/input-text-scroll-event-when-using-arrow-keys.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/overscroll-event-fired-to-scrolled-element.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/domxpath/xml_xpath_runner.html [ Failure ]
-crbug.com/1050754 external/wpt/editing/other/select-all-and-delete-in-html-element-having-contenteditable.html [ Pass ]
-crbug.com/1050754 external/wpt/element-timing/image-carousel.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/element-timing/image-not-fully-visible.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding-detection/fa-windows-1256-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/fi-windows-1252-late.tentative.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/encoding-detection/he-windows-1255-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/is-windows-1252-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/ja-EUC-JP-late.tentative.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/encoding-detection/ja-ISO-2022-JP-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/ja-Shift_JIS-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/lt-windows-1257-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/lv-windows-1257-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/pl-ISO-8859-2-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/pl-windows-1250-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/pt-windows-1252-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/ru-ISO-8859-5-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/th-windows-874-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/uk-windows-1251-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/zh-Big5-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/zh-GBK-late.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/encoding/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/backpressure.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-attributes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-bad-chunks.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-ignore-bom.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-incomplete-input.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-non-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-split-character.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/encode-bad-chunks.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/encode-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/readable-writable-properties.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/event-timing/auxclick.html [ Timeout ]
-crbug.com/1050754 external/wpt/event-timing/buffered-and-duration-threshold.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/event-timing/only-observe-firstInput.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-close.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-eventtarget.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-onmessage.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-onopen.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-prototype.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-url.htm [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-default-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-supported-by-feature-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/picture-in-picture-reporting.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/serial-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/abort/cache.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/accept-header.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/conditional-get.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/error-after-response.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/header-value-combining.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/header-value-null-byte.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/integrity.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-forbidden-headers.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-head.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers-case.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers-nonascii.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-referrer.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-about.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-data.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-others.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/stream-response.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/stream-safe-creation.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/text-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/cors-multiple-origins.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/data-url-shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/credentials/authentication-basic.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/credentials/cookies.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/header-values-normalize.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/header-values.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-basic.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-casing.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-combine.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-errors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-no-cors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-normalize.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-record.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-structure.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-back-to-original-origin.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-count.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-location-escape.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-method.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-schemes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-to-dataurl.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/destination/fetch-destination-worker.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-bad-port.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-default-conditional.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-default.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-force-cache.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-no-cache.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-no-store.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-only-if-cached.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-reload.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-consume.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-init-002.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-keepalive.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-cancel-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-consume-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-error.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-from-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-init-001.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-init-002.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-static-error.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-static-redirect.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-1.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-2.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-3.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-4.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-5.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-6.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-with-broken-then.any.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-with-broken-then.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/content-encoding/bad-gzip-body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cross-origin-resource-policy/fetch.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cross-origin-resource-policy/fetch.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/data-urls/base64.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/304-update.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/freshness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/status.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/fetch-preflight.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/fetch.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/sharedworker.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/window-open.https.sub.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/fetch/private-network-access/idlharness.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/security/embedded-credentials.tentative.sub.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch-sw.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/stale-css.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/stale-image.html [ Failure ]
-crbug.com/1050754 external/wpt/focus/activeelement-after-focusing-different-site-iframe-contentwindow.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/activeelement-after-focusing-different-site-iframe.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/activeelement-after-focusing-same-site-iframe-contentwindow.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/activeelement-after-focusing-same-site-iframe.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/focus-restoration-in-different-site-iframes-window.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/focus-restoration-in-different-site-iframes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/focus/focus-restoration-in-same-site-iframes-window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-activeelement-after-focusing-out-iframes.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-contentwindow-focus-with-different-site-intermediate-frame.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-contentwindow-focus-with-same-as-top-intermediate-frame.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-focus-with-different-site-intermediate-frame.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-focus-with-same-as-top-intermediate-frame.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-focuses-parent-different-site.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-40.html [ Pass ]
-crbug.com/1050754 external/wpt/fullscreen/api/element-request-fullscreen-options.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/geolocation-API/getCurrentPosition_IDL.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/geolocation-API/getCurrentPosition_permission_deny.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/geolocation-API/watchPosition_permission_deny.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/gyroscope/Gyroscope.https.html [ Failure ]
-crbug.com/1050754 external/wpt/hr-time/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html-media-capture/idlharness.window.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-samedoc.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-position-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/001.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt-and-unload-script-closeable.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt/004.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/joint-session-history/joint-session-history-remove-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/004.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/005.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/allow_prototype_cycle_through_location.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/scripted_click_location_assign_during_load.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_cached.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_checking.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_noupdate.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_progress.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/manifest_url_check.https.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_beforeunload.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-innerheight-innerwidth.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-screenx-screeny.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-width-height.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/closed-attribute.window.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/navigate-to-about-blank-while-initial-load-pending.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/noopener-noreferrer-BarProp.window.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/noopener-noreferrer-sizing.window.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/window-open-noopener.html?_parent [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/window-open-noopener.html?_self [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/window-open-noopener.html?indexed [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/window-open-noreferrer.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/auxiliary-browsing-contexts/opener.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/browsing-context-names/choose-_blank-001.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/browsing-context-names/choose-_blank-002.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/browsing-context-names/choose-_parent-002.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/browsing-context-names/choose-_top-001.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/browsing-context-names/choose-default-001.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-flipY.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-origin.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-transfer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/shadows/canvas_shadows_001.htm [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/scroll/2d.scrollPathIntoView.verticalRL.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.worker.html [ Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/fetch.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/iframe.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/image.https.window.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/link.https.window.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/redirect.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/video.https.window.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https.html?0-1 [ Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https.html?2-3 [ Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https.html?4-last [ Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/coep-redirect.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/coep.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/header-parsing.https.html [ Crash Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/javascript-url.https.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/navigate-to-aboutblank.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/no-https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-redirect-same-origin-allow-popups.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-with-structured-header.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-blur.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-closed.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-focus.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-frames.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-get.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-2.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-self.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-top.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-window.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/report-to-both_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/resource-popup.https.html [ Crash Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-notifications-api.any.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-notifications-api.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-sharedworker-failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=utf8 [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=windows-1252 [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=x-cp1251 [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=workers [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=workers [ Failure ]
-crbug.com/1050754 external/wpt/html/interaction/focus/document-level-focus-apis/document-has-system-focus.html [ Pass ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/document-with-fragment-empty.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/document-with-fragment-nonexistent.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/document-with-fragment-top.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/document-with-fragment-valid.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/skip-another-top-level-browsing-context.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/supported-elements.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/src_object_blob.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-mutable-fragment.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-mode-disabled.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-remove-by-setting-innerHTML.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-embed-element/embed-dimension.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/object-events.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/usemap-casing.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-target/rel-base-target.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-target/rel-button-target.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-target/rel-form-target.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-target/rel-input-target.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/input-change-event-properties.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/forms/textfieldselection/selection-not-application-textarea.html [ Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-input-element/checkable-active-onblur.html [ Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-input-element/selection-pointer.html [ Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-label-element/proxy-modifier-click-to-associated-element.tentative.html [ Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-parts-structure.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-popup.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/repeated-imports.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/microtasks/checkpoint-importScripts.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html [ Failure ]
-crbug.com/1050754 external/wpt/html/syntax/xmldecl/xmldecl-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/user-activation/consumption-crossorigin.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/consumption-sameorigin.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/propagation-crossorigin.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/propagation-sameorigin.html [ Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-default-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/data-driven/parsing-internal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/data-driven/resolving-internal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-retargeting.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception-following-subtest.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/unhandled-rejection-following-subtest.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/unhandled-rejection.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/context.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/order-of-metas.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/secure-context.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/title.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/wpt-server-http.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/wpt-server-wpt-flags.sub.html?wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/actionsWithKeyPressed.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/crossOrigin.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/eventOrder.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/iframe.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/multiDevice.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/textEditCommands.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/click_nested.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/click_window.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/delete_all_cookies.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/file_upload.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/virtual_authenticator.html [ Crash ]
-crbug.com/1050754 external/wpt/intersection-observer/iframe-no-root-with-wrapping-scroller.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/iframe-no-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/inline-client-rect.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/multiple-targets.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/multiple-thresholds.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/root-margin-root-element.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/root-margin.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-no-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-with-document-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-zero-size-target.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/target-in-different-window.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/intersection-observer/text-target.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/timestamp.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/blur-filter.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/drop-shadow-filter-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/iframe-target.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-effects.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-occlusion-svg-foreign-object.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-occlusion.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/image-not-fully-visible.html [ Failure ]
-crbug.com/1050754 external/wpt/longtask-timing/containerNames.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/longtask-timing/containerTypes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/displaystyle-1.html [ Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/tabindex-002.html [ Timeout ]
-crbug.com/1050754 external/wpt/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/media-source/mediasource-getvideoplaybackquality.html [ Pass ]
-crbug.com/1050754 external/wpt/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStream-MediaElement-firstframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStream-clone.https.html [ Pass ]
-crbug.com/1050754 external/wpt/mixed-content/blob.https.sub.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/native-io/capacity_allocation_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/close_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_flush_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_getLength_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_read_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_write_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/delete_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/flush_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/getLength_setLength_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_async_failure_handling.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_getAll_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_correct_arraybufferview_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_failure_handling.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_bounds_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_capacity_allocation_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_capacity_allocation_async.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_capacity_allocation_async.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_capacity_allocation_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_capacity_allocation_async.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_getLength_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/navigation-timing/test_performance_attributes.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/notifications/idlharness.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/notifications/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/notifications/idlharness.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-gradient.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-text-input.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/border-image.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/child-painting-first-image.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/first-contentful-canvas-webgl2.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/first-contentful-image.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/first-contentful-paint.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/mask-image.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/sibling-painting-first-image.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-method-basic-card/payment-request-canmakepayment-method.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/payment-request/constructor_convert_method_data.https.html [ Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-is-showing.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-abort-method.https.html [ Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-canmakepayment-method.https.html [ Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-hasenrolledinstrument-method-protection.tentative.https.html [ Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-hasenrolledinstrument-method.tentative.https.html [ Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-show-method.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/payment-request/rejects_if_not_active.https.html [ Pass ]
-crbug.com/1050754 external/wpt/payment-request/show-consume-activation.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/payment-request/show-method-optional-promise-rejects.https.html [ Pass ]
-crbug.com/1050754 external/wpt/performance-timeline/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-default-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-disabled-by-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-supported-by-permissions-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/geolocation-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/midi-report-only.https.html [ Pass ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/payment-report-only.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/picture-in-picture-report-only.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/picture-in-picture-reporting.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/serial-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/serial-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions/permissions-query-feature-policy-attribute.https.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/picture-in-picture/css-selector.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/disable-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/enter-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/exit-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/idlharness.window.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/leave-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/mediastream.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/picture-in-picture-element.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/picture-in-picture-window.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/removed-from-document.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/request-picture-in-picture-twice.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/request-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/shadow-dom.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_mouse-on-object.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_mouse-pointer-on-scrollbar.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_mouseevent_key_pressed.html [ Pass ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_auxclick_is_a_pointerevent.html?mouse [ Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_auxclick_is_a_pointerevent.html?pen [ Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_movementxy.html?mouse [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_movementxy.html?pen [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_movementxy.html?touch [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_pointerId_scope.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-adjustment_click_target.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_coordinates_when_locked.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_getCoalescedEvents_when_pointerlocked.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerrawupdate_in_pointerlock.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/mouse_buttons_back_forward.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/movementX_Y_basic.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/pointerlock_remove_target.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/pointerlock_remove_target_on_mouseup.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/pointerlock_shadow.html [ Failure ]
-crbug.com/1050754 external/wpt/preload/link-header-preload-imagesrcset.html [ Failure ]
-crbug.com/1050754 external/wpt/push-api/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/always/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/always/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/default/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/default/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/never/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/never/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-crossorigin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-crossorigin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/always/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/always/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/default/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/default/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/never/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/never/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-crossorigin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-crossorigin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/always/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/always/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/default/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/default/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/never/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/never/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-crossorigin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-crossorigin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/always/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/always/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/default/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/default/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/never/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/never/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-crossorigin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-crossorigin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/requestidlecallback/callback-suspended.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/requestidlecallback/callback-timeout-when-busy.html [ Pass ]
-crbug.com/1050754 external/wpt/requestidlecallback/callback-timeout.html [ Pass ]
-crbug.com/1050754 external/wpt/requestidlecallback/callback-xhr-sync.html [ Pass ]
-crbug.com/1050754 external/wpt/resource-timing/nested-context-navigations-embed.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/resource-timing/nested-context-navigations-iframe.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/resource-timing/nested-context-navigations-object.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/resource-timing/object-not-found-adds-entry.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/resource-timing/resource_timing_buffer_full_eventually.html [ Timeout ]
-crbug.com/1050754 external/wpt/screen-orientation/active-lock.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-orientation/lock-basic.html [ Timeout ]
-crbug.com/1050754 external/wpt/screen-orientation/lock-sandboxed-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-orientation/onchange-event-subframe.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-orientation/onchange-event.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/find-range-from-text-directive.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/force-load-at-top.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/redirects.html [ Timeout ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/scroll-to-text-fragment-security.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/scroll-to-text-fragment.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/selection/contenteditable/modifying-selection-with-primary-mouse-button.tentative.html [ Pass ]
-crbug.com/1050754 external/wpt/serial/idlharness.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/idlharness.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy-attribute.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-default-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-disabled-by-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serialPort_close.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_close.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_getInfo.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_getInfo.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_getSignals.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_getSignals.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_ondisconnect.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_ondisconnect.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_open.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_open.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_cancel.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_cancel.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_chain.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_chain.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_closeLocked.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_closeLocked.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_disconnect.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_disconnect.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_largeRead.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_largeRead.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_open.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_open.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_parityError.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_parityError.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_pipeThrough.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_pipeThrough.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_smallRead.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_smallRead.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_setSignals.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_setSignals.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_writable.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_writable.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_getPorts.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_getPorts.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_onconnect.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_onconnect.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_ondisconnect.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_ondisconnect.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_requestPort.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/ServiceWorkerGlobalScope/registration-attribute.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/claim-shared-worker-fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/claim-worker-fetch.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/client-navigate.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-frozen.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/credentials.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-readable-stream.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/import-scripts-redirect.https.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/nested-blob-url-workers.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/postmessage.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/referrer-policy-header.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/register-closed-window.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/registration-updateviacache.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-after-oneday.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-bytecheck.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-import-scripts.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-not-allowed.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-registration-with-type.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/windowclient-navigate.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/shadow-dom/MouseEvent-prototype-offsetX-offsetY.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/untriaged/html-elements-in-shadow-trees/html-forms/test-003.html [ Crash ]
-crbug.com/1050754 external/wpt/shape-detection/detection-HTMLVideoElement.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/shape-detection/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/storage-access-api/hasStorageAccess.sub.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/storage-access-api/requestStorageAccess.sub.window.html [ Failure ]
-crbug.com/1050754 external/wpt/storage-access-api/storageAccess.testdriver.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/streams/piping/abort.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/close-propagation-backward.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/close-propagation-forward.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/error-propagation-backward.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/error-propagation-forward.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/flow-control.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/general.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/multiple-propagation.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/pipe-through.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/then-interception.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/throwing-options.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/piping/transform-streams.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/queuing-strategies.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-byte-streams/bad-buffers-and-views.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-byte-streams/construct-byob-request.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-byte-streams/general.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/async-iterator.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/bad-strategies.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/bad-underlying-sources.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/cancel.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/constructor.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/count-queuing-strategy-integration.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/default-reader.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/floating-point-total-queue-size.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/garbage-collection.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/general.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/patched-global.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/reentrant-strategies.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/tee.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/readable-streams/templated.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transferable/shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/streams/transform-streams/backpressure.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/errors.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/flush.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/general.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/lipfuzz.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/patched-global.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/properties.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/reentrant-strategies.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/strategies.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/transform-streams/terminate.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/aborting.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/bad-strategies.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/bad-underlying-sinks.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/byte-length-queuing-strategy.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/close.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/constructor.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/count-queuing-strategy.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/error.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/floating-point-total-queue-size.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/general.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/properties.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/reentrant-strategy.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/start.any.js [ Skip ]
-crbug.com/1050754 external/wpt/streams/writable-streams/write.any.js [ Skip ]
-crbug.com/1050754 external/wpt/svg/animations/scripted/animatetransform-type-missing-value-default.html [ Failure ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/stroke-width-computed.svg [ Failure ]
-crbug.com/1050754 external/wpt/svg/struct/scripted/autofocus-attribute.svg [ Crash Failure ]
-crbug.com/1050754 external/wpt/svg/types/scripted/SVGGraphicsElement.getBBox-02.html [ Failure ]
-crbug.com/1050754 external/wpt/trusted-types/trusted-types-navigation.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/uievents/click/auxclick_event.html [ Timeout ]
-crbug.com/1050754 external/wpt/uievents/interface/keyboard-accesskey-click-event.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/keyboard/modifier-keys-combinations.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/keyboard/modifier-keys.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/focus-events/focus-contained.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/focus-events/focus-management-expectations.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/focus-events/focus.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/mouse-events/wheel-basic.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/mouse-events/wheel-scrolling.html [ Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/link-upgrade.sub.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/url/failure.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/urlpattern/urlpattern.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/user-timing/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-before-xr-session.https.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-during-xr-session.https.html [ Failure ]
-crbug.com/1050754 external/wpt/visual-viewport/viewport-resize-event-on-load-overflowing-page.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/visual-viewport/viewport-unscaled-scale.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/constructor/compile.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/constructor/instantiate-bad-imports.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/constructor/instantiate.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/constructor/multi-value.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/constructor/toStringTag.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/constructor/validate.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/functions/incumbent.html [ Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/global/constructor.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/global/toString.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/global/type.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/global/value-get-set.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/global/valueOf.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/instance/constructor-bad-imports.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/instance/constructor-caching.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/instance/constructor.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/instance/exports.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/instance/toString.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/interface.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/buffer.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor-shared.tentative.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor-shared.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor-shared.tentative.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor-types.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/grow.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/grow.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/grow.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/toString.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/type.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/module/constructor.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/module/customSections.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/module/exports.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/module/imports.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/module/toString.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/prototypes.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/constructor-reftypes.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/constructor-types.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/constructor.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/get-set.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/grow.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/length.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/set-reftypes.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/toString.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/type.tentative.any.js [ Skip ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/broadcastchannel-success-and-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/serialization-via-notifications-api.any.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/serialization-via-notifications-api.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/window-sharedworker-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/window-simple-success.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/wasm/webapi/body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/contenttype.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/empty-body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/instantiateStreaming-bad-imports.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/instantiateStreaming.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/invalid-args.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/invalid-code.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/modified-contenttype.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/rejected-arg.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/status.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/finishing-an-animation.html [ Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/playing-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/timelines/document-timelines.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-csp-allowed.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-subresource-load.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-nested-bundle.https.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-path-restriction.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-static-element-with-base.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-static-element.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/acquire.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/held.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/idlharness.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/ifAvailable.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/lock-attributes.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-exclusive.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-mixed.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-shared.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/non-secure-context.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/query-empty.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/resource-names.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/secure-context.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/signal.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/steal.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-share/share-sharePromise-internal-slot.https.html [ Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audiocontext-interface/processing-after-resume.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-process-zero-outputs.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/suspended-context-messageport.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webmessaging/broadcastchannel/workers.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/webmessaging/multi-globals/broadcastchannel-current.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/webmessaging/multi-globals/broadcastchannel-incumbent.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-simulcast.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCIceConnectionState-candidate-pair.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-operations.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-videoDetectorTest.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/protocol/rtp-clockrate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/protocol/rtp-demuxing.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/protocol/video-codecs.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/basic.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/getStats.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/setParameters-active.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/vp8.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/websockets/basic-auth.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binary/001.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binary/002.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binary/004.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binary/005.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/bufferedAmount-unchanged-by-sync-xhr.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/001.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/004.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/005.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/007.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/010.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/011.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/012.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/017.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/021.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/cookies/001.html?wss&wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/002.html?wss&wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/005.html?wss&wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/006.html?wss&wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/websockets/extended-payload-length.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/001.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/002.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/007.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/015.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/017.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/018.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/send/006.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/opening-handshake/001.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/close.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/unload-a-document/002.html?wss [ Crash Failure ]
-crbug.com/1050754 external/wpt/webstorage/storage_session_window_open.window.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/webtransport/quic/client-indication.sub.any.html [ Skip ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_create_move.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_delay_creation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_pause_resume_stop.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_states.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrSession_environmentBlendMode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrSession_interactionMode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_dataUnavailable.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_incorrectUsage.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_luminance_alpha_dataValid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/depth_sensing_notEnabled.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/nested_fullscreen.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_input_source_recreation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_input_sources_change.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_referenceSpace_reset_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_select.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_select_subframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_squeeze.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/exclusive_requestFrame_nolayer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getInputPose_handedness.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getInputPose_pointer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getViewerPose_emulatedPosition.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_source_cancel.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_inputSources.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_states_regular.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_states_transient.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/layers/xrWebGLBinding_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrFrame_getLightEstimate_oldSession.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrFrame_getLightEstimate_staleFrame.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrFrame_getLightEstimate_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrSession_getLightProbe_ended.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrSession_getLightProbe_notEnabled.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrSession_getLightProbe_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrWebGLBinding_getReflectionCubeMap.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/navigator_xr_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_update.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_vertical_fov_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_vertical_fov_inline.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_create_xrcompatible.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_makecompatible_contextlost.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_makecompatible_reentrant.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrBoundedReferenceSpace_updates.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_disconnect_ends.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_optionalFeatures.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_getPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_getViewerPose_getPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_getViewerPose_getPose_identities.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_lifetime.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_session_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_add_remove.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_emulatedPosition.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_profiles.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrPose_transform_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffset.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffsetBounded.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffset_viewer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_relationships.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_inverse.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_cancelAnimationFrame.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_end.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_input_events_end.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_callback_calls.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_data_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_timestamp.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestReferenceSpace.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestReferenceSpace_features.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestSessionDuringEnd.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_viewer_referenceSpace.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_visibilityState.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_eyes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_match.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_oneframeupdate.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrViewerPose_views_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrViewport_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_draw.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_scale.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_opaque_framebuffer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_viewports.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xr_viewport_scale.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/window-segments/getWindowSegments.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-MessageEvent-source.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-constructor.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-detach-frame-in-error-event.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-exception-propagation.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-exception.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-replace-EventHandler.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-script-error.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-simple.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorkerPerformanceNow.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker_blobUrl.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker_dataUrl.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/Worker-base64.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-constructor-proto.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-custom-event.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-location.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-event-handler.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-global-constructor.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-self.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/WorkerNavigator-hardware-concurrency.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/WorkerNavigator.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/abrupt-completion.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/baseurl/alpha/importScripts-in-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/baseurl/alpha/xhr-in-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/Infinity-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/NaN-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/URLMismatchError.htm [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/dummy-name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/dummy-shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/empty-name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/global-members.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/no-arguments-ctor.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/null-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/number-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-onmessage.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-properties.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-readonly.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/same-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/undefined-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/unexpected-global-properties.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/data-url-shared.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/examples/general.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/examples/onconnect.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/importscripts_mime.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/getting.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/location/redirect-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/location/returns-same-object.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/self.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/catch.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-redirect-to-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-same-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-redirect-to-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-same-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/dedicated-worker-import-csp.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/workers/modules/dedicated-worker-import-referrer.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-blob-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-csp.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-data-url-cross-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-data-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-referrer.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-options-credentials.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-options-type.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-parse-error-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/name-property.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/encodings/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/interface-objects/004.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/001.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/exposure.any.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/001.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/002.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/run-a-worker/002.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/run-a-worker/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/structured-clone/shared.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/006.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-from-blob-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-name-via-options.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-options-mismatch.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-parse-error-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/animation-worklet-referrer.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/worklets/audio-worklet-csp.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/worklets/audio-worklet-referrer.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/worklets/layout-worklet-csp.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/worklets/layout-worklet-referrer.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/xhr/open-url-redirected-sharedworker-origin.htm [ Failure ]
-crbug.com/1050754 external/wpt/xhr/over-1-meg.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/send-after-setting-document-domain.htm [ Crash Pass ]
-crbug.com/1050754 external/wpt/xhr/sync-no-timeout.any.sharedworker.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations b/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations
deleted file mode 100644
index 744ab602..0000000
--- a/third_party/blink/web_tests/android/WebLayerWPTOverrideExpectations
+++ /dev/null
@@ -1,2147 +0,0 @@
-# results: [ Failure Crash Timeout Pass Skip ]
-# conflict_resolution: Override
-
-# This file will be used to add override expectations for WPT tests when running on Weblayer.
-# Expectations with bug crbug.com/1050754 were created as preliminary expectations in CL
-# crrev.com/c/2070826. Several test expectations below will be moved to the AndroidWPTNeverFixTests
-# file. When the test failures below are triaged, new bugs will be created and we will change the
-# bug for the expectation to the new bug.
-
-# Test fails when run on Android.
-crbug.com/1197454 external/wpt/document-policy/experimental-features/unsized-media.tentative.https.sub.html [ Failure ]
-
-# Basic card is not supported in WebLayer.
-crbug.com/1213456 external/wpt/payment-method-basic-card/payment-request-canmakepayment-method.https.html [ Skip ]
-crbug.com/1213456 external/wpt/payment-request/payment-request-abort-method.https.html [ Skip ]
-crbug.com/1213456 external/wpt/payment-request/payment-request-canmakepayment-method.https.html [ Skip ]
-crbug.com/1213456 external/wpt/payment-request/payment-request-hasenrolledinstrument-method.tentative.https.html [ Skip ]
-crbug.com/1213456 external/wpt/payment-request/rejects_if_not_active.https.html [ Skip ]
-
-# Periodic background sync is not supported in WebLayer.
-crbug.com/1091211 external/wpt/periodic-background-sync/periodicsync.https.window.html [ Skip ]
-
-# This test is flaky.
-crbug.com/1126079 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html [ Crash Pass Timeout ]
-
-# Web notifications are not supported in WebLayer.
-crbug.com/1025610 external/wpt/notifications/idlharness.https.any.html [ Skip ]
-crbug.com/1025610 external/wpt/notifications/idlharness.https.any.serviceworker.html [ Skip ]
-crbug.com/1025610 external/wpt/notifications/idlharness.https.any.sharedworker.html [ Skip ]
-crbug.com/1025610 external/wpt/notifications/idlharness.https.any.worker.html [ Skip ]
-crbug.com/1025610 external/wpt/notifications/instance.html [ Skip ]
-crbug.com/1025610 external/wpt/notifications/permission.html [ Skip ]
-
-# Portals are not yet supported in WebLayer.
-crbug.com/1174856 external/wpt/portals/csp/frame-src.sub.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/history/history-manipulation-inside-portal-with-subframes.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/history/history-manipulation-inside-portal.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portal-activate-data.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portal-activate-default.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portal-activate-event.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portal-non-http-navigation.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portal-onload-event.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-activate-inside-portal.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-activate-resolution.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-activate-twice.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-activate-while-unloading.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-adopt-predecessor.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-close-window.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-focus.sub.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-host-exposure.sub.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-host-hidden-after-activation.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-host-post-message.sub.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-navigate-after-adoption.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-nested.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-post-message.sub.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-referrer-inherit-header.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-referrer-inherit-meta.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-referrer.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-repeated-activate.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/portals-set-src-after-activate.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/predecessor-fires-unload.html [ Skip ]
-crbug.com/1174856 external/wpt/portals/xfo/portals-xfo-sameorigin.html [ Skip ]
-
-# This test fails in WebLayer and Clank.
-crbug.com/1145401 external/wpt/presentation-api/controlling-ua/getAvailability.https.html [ Failure ]
-
-# Push API is not supported in WebLayer.
-crbug.com/1025610 external/wpt/push-api/idlharness.https.any.html [ Skip ]
-crbug.com/1025610 external/wpt/push-api/idlharness.https.any.serviceworker.html [ Skip ]
-crbug.com/1025610 external/wpt/push-api/idlharness.https.any.sharedworker.html [ Skip ]
-crbug.com/1025610 external/wpt/push-api/idlharness.https.any.worker.html [ Skip ]
-
-# Several scroll animations tests fail in WebLayer and Clank.
-crbug.com/1198063 external/wpt/scroll-animations/css/at-scroll-timeline-start-end.html [ Failure ]
-crbug.com/1198063 external/wpt/scroll-animations/current-time-root-scroller.html [ Failure ]
-crbug.com/1198063 external/wpt/scroll-animations/idlharness.window.html [ Failure ]
-crbug.com/1198063 external/wpt/scroll-animations/progress-based-current-time.tenative.html [ Failure ]
-crbug.com/1198063 external/wpt/scroll-animations/scroll-timeline-snapshotting.html [ Timeout ]
-
-# SharedWorker is not supported on Android (https://crbug.com/154571).
-crbug.com/1050754 external/wpt/background-fetch/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1190392 external/wpt/trusted-types/WorkerGlobalScope-eval.html [ Failure ]
-crbug.com/1190392 external/wpt/trusted-types/WorkerGlobalScope-importScripts.html [ Failure ]
-crbug.com/1190392 external/wpt/trusted-types/worker-constructor.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-none/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.http-rp/worker-src-wildcard/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-self/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-none/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-self/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-classic.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-classic.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-import-data.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-import.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-import.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-module.http.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/gen/top.meta/worker-src-wildcard/sharedworker-module.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/sandbox/shared-worker-sandbox.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/script-src/script-src-strict_dynamic_worker.https.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/script-src/worker-data-set-timeout.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/script-src/worker-importscripts.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/script-src/worker-set-timeout.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-child.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-list.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-none.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-self.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-child-fallback-blocked.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-child-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-default-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-script-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/worker-src/shared-worker-src-self-fallback.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html [ Failure ]
-crbug.com/1317977 external/wpt/content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/microtask-queuing/queue-microtask-exceptions.any.sharedworker.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/microtask-queuing/queue-microtask.any.sharedworker.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.sharedworker.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html [ Failure ]
-
-# crbug.com/178097: navigator.registerProtocolHandler is not available on Android.
-crbug.com/1198573 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.https.window.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html [ Failure ]
-
-# Failing WebAppApi tests on Clank and WebLayer on Android
-crbug.com/1198573 external/wpt/html/webappapis/dynamic-markup-insertion/document-write/047.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/history.window.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/reload.window.html [ Crash Pass Timeout ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.worker.html [ Failure Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html [ Crash Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/runtime-error-in-setInterval.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/scripting/processing-model-2/runtime-error-in-setTimeout.html [ Failure ]
-crbug.com/1198573 external/wpt/html/webappapis/user-prompts/cannot-show-simple-dialogs/confirm-different-origin-frame.sub.html [ Pass ]
-crbug.com/1198573 external/wpt/html/webappapis/user-prompts/cannot-show-simple-dialogs/prompt-different-origin-frame.sub.html [ Pass ]
-
-# Failing CSP tests on Clank and WebLayer on Android
-crbug.com/1198079 external/wpt/content-security-policy/embedded-enforcement/subsumption_algorithm-source_list-wildcards.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worker-import.http.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worker-import.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-animation.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-audio.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-layout.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-paint-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-self/worklet-paint.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-paint-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.http.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worker-import.http.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worker-import.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-animation.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-audio.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-layout.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-paint-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-self/worklet-paint.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/script-src-wildcard/worklet-paint-import-data.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/worker-src-self/worker-import.http.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/gen/top.meta/worker-src-self/worker-import.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/navigate-to/spv-only-sent-to-initiator.sub.html [ Failure Pass ]
-crbug.com/1198079 external/wpt/content-security-policy/object-src/object-src-url-allowed.html [ Crash Failure Pass ]
-crbug.com/1198079 external/wpt/content-security-policy/object-src/object-src-url-embed-allowed.html [ Crash Failure Pass ]
-crbug.com/1198079 external/wpt/content-security-policy/object-src/object-src-url-redirect-allowed.html [ Crash Failure Pass ]
-crbug.com/1198079 external/wpt/content-security-policy/sandbox/service-worker-sandbox.https.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-1.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-3.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-7.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-9.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/blockeduri-eval.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/blockeduri-inline.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/idlharness.window.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/inside-shared-worker.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html [ Failure ]
-crbug.com/1198079 external/wpt/content-security-policy/style-src/style-blocked.sub.html [ Failure ]
-
-# Reporting IDL failures on Android.
-crbug.com/1198081 external/wpt/reporting/idlharness.any.html [ Failure ]
-crbug.com/1198081 external/wpt/reporting/idlharness.any.worker.html [ Failure ]
-
-# Signed Exchange failures on Android.
-crbug.com/1198085 external/wpt/signed-exchange/check-cert-request.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/fallback-to-another-sxg.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok-no-referrer.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok-origin-referrer.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/service-workers/sxg-sw-register-after-fallback.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/service-workers/sxg-sw-register.tentative.https.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/subresource/sxg-subresource-header-integrity-mismatch.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/subresource/sxg-subresource.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-data-cert-url.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-location-fragment.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-location.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-merkle-integrity-error.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-navigation-timing.tentative.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-prefetch.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-policy-header.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html [ Failure ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-utf8-inner-url.tentative.html [ Timeout ]
-crbug.com/1198085 external/wpt/signed-exchange/sxg-variants-match.tentative.html [ Failure ]
-
-# WebCodecs failures on Android.
-crbug.com/1198089 external/wpt/webcodecs/video-encoder-config.https.any.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/video-encoder-config.https.any.worker.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/video-frame.any.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/video-frame.any.worker.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-canvasImageSource.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-createImageBitmap.any.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-createImageBitmap.any.worker.html [ Failure ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-texImage.any.html [ Failure Pass ]
-crbug.com/1198089 external/wpt/webcodecs/videoFrame-texImage.any.worker.html [ Failure Pass ]
-
-# Failing background-fetch tests.
-crbug.com/882282 external/wpt/background-fetch/fetch.https.window.html [ Failure Pass Timeout ]
-
-# Test seems to be flaky on both Chrome and WebLayer.
-crbug.com/1177918 external/wpt/input-events/input-events-get-target-ranges.html [ Failure Pass ]
-
-# Layout Instability tests are not calibrated for mobile screens.
-crbug.com/1191142 external/wpt/layout-instability/absolute-child-shift-with-parent-contain.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/absolute-child-shift-with-parent-negative-overflow.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/absolute-child-shift-with-parent-overflow.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/body-display-change.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/buffer-layout-shift.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/buffered-flag.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/child-shift-with-parent-overflow-hidden.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/child-shift-with-parent-overflow-x-clip.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/child-shift-with-parent.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/composited-element-movement.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/content-visibility-auto-offscreen.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/expand-above-viewport.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/fixed-position-move.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/input-timestamp.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/move-distance-clamped.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/move-transformed.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/multi-clip-visual-rect.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/opacity-zero-layout-and-visible.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/partially-clipped-visual-rect.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/pointerdown-becomes-scroll.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/pointerdown-becomes-tap.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/pointermove-becomes-drag.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/recent-input.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/rtl-distance.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/shift-into-viewport.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/shift-outside-viewport.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/shift-while-scrolled.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/shift-with-overflow-status-change.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/simple-block-movement.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/sources-enclosure.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/sources-maximpact.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/sources.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/sticky-descendant-move.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/transform.html [ Skip ]
-crbug.com/1191142 external/wpt/layout-instability/visibility-hidden-layout-and-visible.html [ Skip ]
-
-# Add untriaged failures in this block
-crbug.com/1050754 external/wpt/FileAPI/file/send-file-form-punctuation.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/FileAPI/file/send-file-formdata-controls.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/bindings-inject-values-bypass-chain.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/IndexedDB/file_support.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/idbindex-rename-abort.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/IndexedDB/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-store-cursors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-store.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/transaction-abort-generator-revert.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/inactive-timeline.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/animation-worklet/scroll-timeline-writing-modes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-local-time-null-1.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-absent-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-added-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-off-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-on-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-on-off-on-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-removed-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/cross-origin-iframe-getAvailability.sub.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/characteristicProperties.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/service-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/readValue/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/readValue/read-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/writeValue/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/writeValue/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-before-watchAdvertisements.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-pending-operation.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-signal-stops-events.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-subsequent-watchAdvertisements-call-stops-events.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/advertisementreceived-event-fired.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/concurrent-watchAdvertisements-calls.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/service-and-manufacturer-data-filtered-from-event.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/subsequent-watchAdvertisements-call.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/watching-two-devices-abort-one-watchAdvertisements.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/watching-two-devices.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/granted-devices-with-services.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/no-granted-devices.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/returns-same-bluetooth-device-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/requestDevice/canonicalizeFilter/dataPrefix-buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/requestDevice/canonicalizeFilter/empty-dataPrefix.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/requestDevice/canonicalizeFilter/invalid-companyIdentifier.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/requestDevice/canonicalizeFilter/mask-buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-service-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-reconnect-during.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/clear-site-data/storage.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-answers.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-cache-revalidation.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-feature-policy.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-no-feature-policy.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-subresource-redirect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-syncxhr-redirect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/http-equiv-cross-origin-subresource.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/critical-ch/subresource.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-html-script-removal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-svg-script-removal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-blobs-read-blobs.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-html-read-html.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-image-read-image.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-svg-read-svg.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/compat/idlharness.window.html [ Pass ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/compression/compression-including-empty-chunk.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-multiple-chunks.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-output-length.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-stream.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-buffersource.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-constructor-error.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-correct-input.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-empty-input.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-split-chunk.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-uint8array-output.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/content-index/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/prefetch-src/prefetch-header-allowed.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting/report-same-origin-with-cookies.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_subscribe_arguments.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/idlharness.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/samesite/form-post-blank-reload.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/cookies/value/value-ctl.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/value/value.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-width-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/inheritance.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-cascade/all-prop-initial-xml.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-color-adjust/print-color-adjust-parsing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-system-colors.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-contain/contain-size-grid-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-contain/contain-size-grid-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-contain/content-visibility/content-visibility-053.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-contain/content-visibility/content-visibility-068.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-contain/content-visibility/content-visibility-070.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-flexbox/flex-aspect-ratio-img-column-017.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-flexbox/negative-overflow.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/animations/font-stretch-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/fallback-url-to-local.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/font-face-range-order.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/generic-family-keywords-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/at-font-face-font-matching.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-items/grid-minimum-size-grid-items-021.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-layout-api/sync-layout-microtasks.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-logical/inheritance.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/getclientrects-000.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/getclientrects-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/inheritance.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/parsing/column-rule-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/overflow-clip-margin-intersection-observer.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/overflow-codependent-scrollbars.html [ Pass ]
-crbug.com/1050754 external/wpt/css/css-overflow/overflow-padding.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-propagation-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-propagation-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-propagation-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-propagation-007.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-rtl-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-vertical-lr-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollbar-gutter-vertical-rl-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-absolute-replaced-minmax.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/sticky/position-sticky-nested-bottom.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/sticky/position-sticky-nested-right.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/unit-cycles.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-ruby/line-spacing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/abspos-contributes-to-static-parent-bounds.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/focus-prioritized.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/fragment-scrolling-anchors.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/history-restore-anchors.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/negative-layout-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/position-change-heuristic-in-nested-scroll-box.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/position-change-heuristic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/reading-scroll-forces-anchoring.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/scroll-snap-type-on-root-element.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-at-user-scroll-end.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/scrollbar-width-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/scrollbar-width-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/scrollbar-width-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/scrollbar-width-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/scrollbar-width-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/scrollbar-width-006.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/scrollbar-width-008.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-margin-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/tentative/baseline-table.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/tentative/baseline-td.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/tentative/colgroup-col.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/tentative/table-quirks.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/other-lang/css-text-line-break-de-in-loose.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/zh/css-text-line-break-zh-pr-strict.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/tab-size-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-detection-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-detection-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-expansion-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-expansion-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/tab-size/tab-size.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/text-justify/distribute-alias.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/seg-break-transformation-004.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/trailing-space-position-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/white-space-collapse-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/transform-scale-hittest.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-effect.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/properties-value-inherit-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/animation/outline-width-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-ui/text-overflow-023.html [ Pass ]
-crbug.com/1050754 external/wpt/css/css-values/lh-rlh-on-root-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-values/viewport-units-css2-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-presentation-attribute.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/wm-propagation-body-scroll-offset-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/CaretPosition-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/cssom-getBoundingClientRect-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/cssom-view-img-attributes-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/getBoundingClientRect-shy.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-smooth.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-smooth.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollLeft-of-scroller-with-wider-scrollbar.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollintoview.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/cssstyledeclaration-csstext.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/cssstyledeclaration-properties.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/font-family-serialization-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/getComputedStyle-width-scroll.tentative.html [ Pass ]
-crbug.com/1050754 external/wpt/css/geometry/DOMMatrix2DInit-validate-fixup.html [ Failure ]
-crbug.com/1050754 external/wpt/css/selectors/focus-visible-016.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/i18n/css3-selectors-lang-010.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/custom-elements/reactions/DOMStringMap.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/reactions/HTMLInputElement.html [ Failure ]
-crbug.com/1050754 external/wpt/custom-elements/reactions/HTMLOptGroupElement.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/reactions/HTMLParamElement.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/document-policy/experimental-features/sync-script.tentative.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/document-policy/reporting/oversized-images-reporting-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.html [ Pass ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/input-text-scroll-event-when-using-arrow-keys.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/overscroll-event-fired-to-scrolled-element.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/events/webkit-animation-iteration-event.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/dom/idlharness.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/idlharness.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/domxpath/xml_xpath_runner.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/other/select-all-and-delete-in-html-element-having-contenteditable.html [ Pass ]
-crbug.com/1050754 external/wpt/editing/run/bold.html?1-1000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/bold.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/bold.html?2001-3000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/delete.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/italic.html?1-1000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/italic.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?2001-3000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?4001-5000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?5001-6000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyfull.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyfull.html?2001-3000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyfull.html?4001-last [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyright.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyright.html?2001-3000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyright.html?4001-last [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/strikethrough.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/strikethrough.html?2001-last [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/subscript.html [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/superscript.html [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/underline.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/underline.html?2001-last [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/image-carousel.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/element-timing/image-not-fully-visible.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/observe-multiple-images.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/element-timing/progressively-loaded-image.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/fa-windows-1256-late.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/he-ISO-8859-8-late.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/backpressure.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-attributes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-bad-chunks.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-ignore-bom.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-incomplete-input.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-non-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-split-character.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/encode-bad-chunks.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/encode-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/readable-writable-properties.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/event-timing/auxclick.html [ Timeout ]
-crbug.com/1050754 external/wpt/event-timing/only-observe-firstInput.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-close.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-eventtarget.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-onmessage.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-onopen.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-prototype.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-url.htm [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/css/css-shapes/shape-outside/values/shape-margin-001.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/css/cssom-view/scrollintoview.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/editing/other/editable-state-and-focus-in-shadow-dom-in-designMode.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/basic/status.h2.any.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/basic/status.h2.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/headers/headers-normalize.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/headers/headers-record.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/response/response-stream-disturbed-1.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/response/response-stream-disturbed-2.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/response/response-stream-disturbed-3.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/response/response-stream-disturbed-4.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/fetch/api/response/response-stream-disturbed-5.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/html/semantics/embedded-content/the-embed-element/embed-dimension.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/blob-url.any.sharedworker-module.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/blob-url.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/blob-url.any.worker-module.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/payment-request/rejects_if_not_active.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/external/wpt/resize-observer/observe.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/resize-observer/svg.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/storage-access-api/requestStorageAccess.sub.window.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/streams/piping/pipe-through.any.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/streams/piping/pipe-through.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/streams/readable-byte-streams/general.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html [ Timeout ]
-crbug.com/1050754 external/wpt/external/wpt/webrtc/protocol/rtp-demuxing.html [ Failure ]
-crbug.com/1050754 external/wpt/external/wpt/xhr/status.h2.window.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-default-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-supported-by-feature-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/picture-in-picture-reporting.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/serial-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/xr-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/abort/cache.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/accept-header.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/conditional-get.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/error-after-response.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/header-value-combining.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/header-value-null-byte.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/http-response-code.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/http-response-code.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/http-response-code.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/integrity.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-forbidden-headers.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-head.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers-case.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers-nonascii.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-referrer.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-about.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-data.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-others.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/stream-response.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/stream-safe-creation.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/text-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/cors-multiple-origins.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/data-url-shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/credentials/authentication-basic.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/credentials/cookies.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/header-values-normalize.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/header-values.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-basic.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-casing.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-combine.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-errors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-no-cors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-normalize.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-record.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-structure.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-back-to-original-origin.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-count.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-location-escape.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-method.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-schemes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-to-dataurl.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-upload.h2.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-upload.h2.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-upload.h2.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-upload.h2.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/destination/fetch-destination-worker.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-bad-port.any.html [ Timeout ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-bad-port.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-bad-port.any.worker.html [ Timeout ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-default-conditional.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-default.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-force-cache.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-no-cache.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-no-store.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-only-if-cached.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-reload.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-consume.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-init-002.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-keepalive.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-body-read-task-handling.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-cancel-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-consume-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-error.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-from-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-init-001.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-init-002.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-static-error.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-static-redirect.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-1.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-2.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-3.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-4.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-5.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-6.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-with-broken-then.any.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-with-broken-then.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/content-encoding/bad-gzip-body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cross-origin-resource-policy/fetch.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cross-origin-resource-policy/fetch.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/data-urls/base64.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/304-update.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/freshness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/status.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/fetch-preflight.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/fetch.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/sharedworker.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/private-network-access/idlharness.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch-sw.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/stale-css.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/stale-image.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/stale-script.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/focus/activeelement-after-focusing-different-site-iframe-contentwindow.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/activeelement-after-focusing-different-site-iframe.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/activeelement-after-focusing-same-site-iframe-contentwindow.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/activeelement-after-focusing-same-site-iframe.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/focus-already-focused-iframe-deep-different-site.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/focus-restoration-in-different-site-iframes-window.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/focus-restoration-in-different-site-iframes.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/focus-restoration-in-same-site-iframes-window.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/hasfocus-different-site.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/hasfocus-same-site.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-contentwindow-focus-with-different-site-intermediate-frame.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-contentwindow-focus-with-same-as-top-intermediate-frame.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-focus-with-different-site-intermediate-frame.html [ Pass ]
-crbug.com/1050754 external/wpt/focus/iframe-focus-with-same-as-top-intermediate-frame.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-40.html [ Pass ]
-crbug.com/1050754 external/wpt/fullscreen/api/element-request-fullscreen-options.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/geolocation-API/getCurrentPosition_IDL.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/geolocation-API/getCurrentPosition_permission_deny.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/geolocation-API/non-fully-active.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/geolocation-API/watchPosition_permission_deny.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/gyroscope/Gyroscope.https.html [ Failure ]
-crbug.com/1050754 external/wpt/hr-time/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html-media-capture/idlharness.window.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-samedoc.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-position-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt-and-unload-script-closeable.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt/004.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/joint-session-history/joint-session-history-remove-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/004.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/005.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/allow_prototype_cycle_through_location.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_cached.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_checking.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_noupdate.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_progress.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/manifest_url_check.https.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-innerheight-innerwidth.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-screenx-screeny.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-width-height.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-flipY.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-origin.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-transfer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/shadows/canvas_shadows_001.htm [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/scroll/2d.scrollPathIntoView.verticalRL.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.getcontext.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.resize.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.worker.html [ Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.worker.html [ Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/cache-storage.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/iframe-coep-credentialless.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/image.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/video.https.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/multi-globals/workers-coep-report.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/none.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/service-worker-cache-storage.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/shared-workers.html [ Failure ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/header-parsing.https.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-coop-by-sw-from-coop.https.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-coop-by-sw.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-redirect-same-origin-allow-popups.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-blur.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-close.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-closed.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-focus.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-frames.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-length.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-get.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-set.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-get.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-1.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-2.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-self.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-top.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-window.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/report-to-both_coop-ro.https.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html [ Crash Pass Timeout ]
-crbug.com/1050754 external/wpt/html/cross-origin-opener-policy/resource-popup.https.html [ Crash Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.html [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.serviceworker.html [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.worker.html [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-notifications-api.any.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-notifications-api.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-sharedworker-failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=utf8 [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=windows-1252 [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=x-cp1251 [ Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=workers [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=workers [ Failure ]
-crbug.com/1050754 external/wpt/html/interaction/focus/document-level-focus-apis/document-has-system-focus.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/document-with-fragment-valid.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-content-before-legend.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-generated-content.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-multicol.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-align.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-sans-fieldset-display.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-currentSrc.html [ Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/src_object_blob.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-mutable-fragment.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-mode-disabled.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-remove-by-setting-innerHTML.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-embed-element/embed-dimension.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/object-events.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/usemap-casing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-0/text-plain.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/forms/input-change-event-properties.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/forms/textfieldselection/selection-not-application-textarea.html [ Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-input-element/checkable-active-onblur.html [ Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-input-element/selection-pointer.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-label-element/proxy-modifier-click-to-associated-element.tentative.html [ Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-parts-structure.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-popup-position.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-popup.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-popup-element/popup-light-dismiss.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/import-assertions/dynamic-import-with-assertion-argument.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/invalid-content-type.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/repeated-imports.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/microtasks/checkpoint-importScripts.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html [ Failure ]
-crbug.com/1050754 external/wpt/html/syntax/xmldecl/xmldecl-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/user-activation/consumption-crossorigin.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/consumption-sameorigin.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/propagation-crossorigin.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/propagation-sameorigin.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/tasks.window.html [ Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/structured-clone/structured-clone.html [ Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-default-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/data-driven/parsing-internal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/data-driven/resolving-internal.https.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-retargeting.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/assumptions/non-local-ports.sub.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception-following-subtest.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/unhandled-rejection-following-subtest.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/unhandled-rejection.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/context.any.serviceworker-module.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/context.any.sharedworker-module.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/context.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/order-of-metas.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/secure-context.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/title.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/wpt-server-http.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/wpt-server-wpt-flags.sub.html?wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/actionsWithKeyPressed.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/crossOrigin.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/eventOrder.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/iframe.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/multiDevice.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/textEditCommands.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/actions/touchPointerEventProperties.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/click_nested.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/click_window.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/delete_all_cookies.html [ Pass ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/file_upload.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/virtual_authenticator.html [ Crash ]
-crbug.com/1050754 external/wpt/input-events/input-events-cut-paste.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/intersection-observer/iframe-no-root-with-wrapping-scroller.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/iframe-no-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/inline-client-rect.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/multiple-targets.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/multiple-thresholds.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/root-margin-root-element.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/root-margin.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-no-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-with-document-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-zero-size-target.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/text-target.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/blur-filter.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/drop-shadow-filter-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/iframe-target.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-effects.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-occlusion-svg-foreign-object.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-occlusion.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/image-not-fully-visible.html [ Failure ]
-crbug.com/1050754 external/wpt/longtask-timing/containerNames.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/longtask-timing/containerTypes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/longtask-timing/longtask-before-observer.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/display-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/displaystyle-1.html [ Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/tabindex-002.html [ Timeout ]
-crbug.com/1050754 external/wpt/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/media-source/mediasource-changetype-play-negative.html [ Timeout ]
-crbug.com/1050754 external/wpt/media-source/mediasource-getvideoplaybackquality.html [ Pass ]
-crbug.com/1050754 external/wpt/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStream-MediaElement-firstframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStream-clone.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mst-content-hint/idlharness.window.html [ Pass ]
-crbug.com/1050754 external/wpt/native-io/capacity_allocation_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/capacity_allocation_async_failure_handling.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/close_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_flush_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_getLength_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_read_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_write_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/delete_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/flush_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/getLength_setLength_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_async_failure_handling.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_getAll_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_correct_arraybufferview_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_failure_handling.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_bounds_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_capacity_allocation_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_capacity_allocation_async.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/native-io/write_capacity_allocation_async.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/native-io/write_capacity_allocation_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_capacity_allocation_async.tentative.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/native-io/write_getLength_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/navigation-timing/test_performance_attributes.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/orientation-sensor/AbsoluteOrientationSensor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-sensor/RelativeOrientationSensor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-gradient.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-text-input.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/border-image.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/child-painting-first-image.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/first-contentful-canvas-webgl2.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/first-contentful-image.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/first-contentful-paint.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/mask-image.html [ Pass ]
-crbug.com/1050754 external/wpt/paint-timing/with-first-paint/sibling-painting-first-image.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-handler/respond-with-minimal-ui.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/payment-request/constructor_convert_method_data.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-hasenrolledinstrument-method-protection.tentative.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-show-method.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/payment-request/show-consume-activation.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/payment-request/show-method-optional-promise-rejects.https.html [ Pass ]
-crbug.com/1050754 external/wpt/performance-timeline/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-default-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-disabled-by-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-supported-by-permissions-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/geolocation-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/midi-report-only.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/payment-report-only.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/picture-in-picture-report-only.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/picture-in-picture-reporting.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/serial-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/serial-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/xr-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/xr-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions/permissions-query-feature-policy-attribute.https.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/picture-in-picture/css-selector.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/disable-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/enter-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/exit-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/idlharness.window.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/leave-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/mediastream.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/picture-in-picture-element.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/picture-in-picture-window.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/removed-from-document.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/request-picture-in-picture-twice.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/request-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/shadow-dom.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_mouse-on-object.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_mouse-pointer-on-scrollbar.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_mouseevent_key_pressed.html [ Pass ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_auxclick_is_a_pointerevent.html?mouse [ Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_auxclick_is_a_pointerevent.html?pen [ Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_click_is_a_pointerevent_multiple_clicks.html?mouse [ Failure Pass ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_click_is_a_pointerevent_multiple_clicks.html?touch [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_contextmenu_is_a_pointerevent.html?touch [ Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_movementxy.html?mouse [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_movementxy.html?pen [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_movementxy.html?touch [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_pointerId_scope.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-adjustment_click_target.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_coordinates_when_locked.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_getCoalescedEvents_when_pointerlocked.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerrawupdate_in_pointerlock.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/mouse_buttons_back_forward.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/movementX_Y_basic.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/pointerlock_remove_target.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/pointerlock_remove_target_on_mouseup.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/pointerlock_shadow.html [ Failure ]
-crbug.com/1050754 external/wpt/preload/link-header-preload-imagesrcset.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/always/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/always/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/default/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/default/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/never/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/never/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-crossorigin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-crossorigin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/always/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/always/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/default/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/default/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/never/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/never/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-crossorigin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-crossorigin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/always/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/always/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/default/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/default/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/never/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/never/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-crossorigin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-crossorigin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/always/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/always/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/default/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/default/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/never/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/never/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-crossorigin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-crossorigin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/requestidlecallback/callback-timeout-when-busy.html [ Pass ]
-crbug.com/1050754 external/wpt/requestidlecallback/callback-timeout.html [ Pass ]
-crbug.com/1050754 external/wpt/requestidlecallback/callback-xhr-sync.html [ Pass ]
-crbug.com/1050754 external/wpt/resource-timing/cross-origin-start-end-time-with-redirects.html [ Failure ]
-crbug.com/1050754 external/wpt/resource-timing/document-domain-no-impact-opener.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/resource-timing/object-not-found-adds-entry.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/resource-timing/resource_timing_buffer_full_eventually.html [ Timeout ]
-crbug.com/1050754 external/wpt/screen-orientation/active-lock.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/screen-orientation/idlharness.window.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/screen-orientation/lock-basic.html [ Timeout ]
-crbug.com/1050754 external/wpt/screen-orientation/lock-sandboxed-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-orientation/lock-unlock-check.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/screen-orientation/onchange-event-subframe.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-orientation/onchange-event.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/find-range-from-text-directive.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/force-load-at-top.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/redirects.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/scroll-to-text-fragment-security.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/scroll-to-text-fragment.html [ Crash Timeout ]
-crbug.com/1050754 external/wpt/selection/contenteditable/modifying-selection-with-primary-mouse-button.tentative.html [ Crash Pass ]
-crbug.com/1050754 external/wpt/selection/textcontrols/focus.html [ Crash Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/selection/textcontrols/selectionchange-bubble.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/idlharness.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/idlharness.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy-attribute.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-default-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-disabled-by-feature-policy.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/serial/serialPort_close.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_close.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_getInfo.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_getInfo.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_getSignals.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_getSignals.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_ondisconnect.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_ondisconnect.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_open.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_open.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_cancel.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_cancel.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_chain.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_chain.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_closeLocked.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_closeLocked.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_disconnect.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_disconnect.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_largeRead.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_largeRead.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_open.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_open.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_parityError.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_parityError.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_pipeThrough.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_pipeThrough.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_smallRead.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_readable_smallRead.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_setSignals.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_setSignals.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_writable.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serialPort_writable.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_getPorts.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_getPorts.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_onconnect.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_onconnect.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_ondisconnect.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_ondisconnect.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/serial/serial_requestPort.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/Service-Worker-Allowed-header.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/ServiceWorkerGlobalScope/registration-attribute.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/about-blank-replacement.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/claim-shared-worker-fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/claim-worker-fetch.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/client-navigate.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-frozen.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/credentials.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-readable-stream.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-request-redirect.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/import-scripts-redirect.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/nested-blob-url-workers.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/no-dynamic-import-in-module.any.serviceworker-module.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/postmessage-to-client-message-queue.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/postmessage.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/referrer-policy-header.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/referrer-toplevel-script-fetch.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/register-default-scope.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/register-same-scope-different-script-url.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/registration-mime-types.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/registration-schedule-job.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-after-navigation-fetch-event.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-after-navigation-redirect.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-after-oneday.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-bytecheck-cors-import.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-bytecheck.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-import-scripts.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-not-allowed.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-registration-with-type.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/windowclient-navigate.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/xhr-content-length.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/MouseEvent-prototype-offsetX-offsetY.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/accesskey.tentative.html [ Pass ]
-crbug.com/1050754 external/wpt/shape-detection/detection-HTMLVideoElement.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/shape-detection/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/storage-access-api/hasStorageAccess.sub.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/storage-access-api/requestStorageAccess.sub.window.html [ Failure ]
-crbug.com/1050754 external/wpt/storage-access-api/storageAccess.testdriver.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/storage/estimate-indexeddb.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/streams/transferable/shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/svg/animations/beginelement-instance-time-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/animations/scripted/animatetransform-type-missing-value-default.html [ Failure ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/stroke-width-computed.svg [ Failure ]
-crbug.com/1050754 external/wpt/svg/types/scripted/SVGGraphicsElement.getBBox-02.html [ Failure ]
-crbug.com/1050754 external/wpt/ua-client-hints/idlharness.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/uievents/click/auxclick_event.html [ Timeout ]
-crbug.com/1050754 external/wpt/uievents/click/click_events_on_input.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/uievents/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/uievents/keyboard/modifier-keys-combinations.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/keyboard/modifier-keys.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/focus-events/focus-contained.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/focus-events/focus-management-expectations.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/focus-events/focus.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/mouse-events/click-on-body.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/mouse-events/wheel-basic.html [ Pass ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/mouse-events/wheel-scrolling.html [ Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/url/a-element-origin-xhtml.xhtml [ Failure ]
-crbug.com/1050754 external/wpt/url/a-element-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/url/a-element-xhtml.xhtml [ Failure ]
-crbug.com/1050754 external/wpt/url/a-element.html [ Failure ]
-crbug.com/1050754 external/wpt/url/failure.html [ Failure ]
-crbug.com/1050754 external/wpt/url/url-constructor.any.html [ Failure ]
-crbug.com/1050754 external/wpt/url/url-constructor.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/url/url-origin.any.html [ Failure ]
-crbug.com/1050754 external/wpt/url/url-origin.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/url/url-setters.html [ Failure ]
-crbug.com/1050754 external/wpt/urlpattern/urlpattern.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/user-timing/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-before-xr-session.https.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-during-xr-session.https.html [ Failure ]
-crbug.com/1050754 external/wpt/visual-viewport/viewport-resize-event-on-load-overflowing-page.html [ Failure ]
-crbug.com/1050754 external/wpt/visual-viewport/viewport-unscaled-scale.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/functions/entry.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/functions/incumbent.html [ Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/idlharness.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/idlharness.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor-shared.tentative.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor-shared.tentative.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/grow.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/grow.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/broadcastchannel-success-and-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/serialization-via-notifications-api.any.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/serialization-via-notifications-api.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/window-sharedworker-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/contenttype.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/empty-body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/instantiateStreaming-bad-imports.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/instantiateStreaming.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/invalid-args.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/invalid-code.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/modified-contenttype.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/rejected-arg.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/status.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/finished.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/onremove.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/finishing-an-animation.html [ Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/playing-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/timelines/document-timelines.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-csp-allowed.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-nested-bundle.https.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-path-restriction.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-static-element-with-base.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-static-element.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/link-subresource-load.https.tentative.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/acquire.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/held.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/idlharness.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/ifAvailable.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/lock-attributes.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-exclusive.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-mixed.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-shared.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/non-secure-context.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/query-empty.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/query-ordering.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-locks/resource-names.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/secure-context.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/signal.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/steal.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audiocontext-interface/processing-after-resume.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-messageport.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-throw-onmessage.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-process-frozen-array.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/process-parameters.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/suspended-context-messageport.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webcodecs/image-decoder.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webcodecs/video-decoder.https.any.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webcodecs/video-decoder.https.any.worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webcodecs/videoDecoder-codec-specific.https.any.html?h264_annexb [ Timeout ]
-crbug.com/1050754 external/wpt/webcodecs/videoDecoder-codec-specific.https.any.html?h264_avc [ Timeout ]
-crbug.com/1050754 external/wpt/webcodecs/videoDecoder-codec-specific.https.any.worker.html?h264_annexb [ Timeout ]
-crbug.com/1050754 external/wpt/webcodecs/videoDecoder-codec-specific.https.any.worker.html?h264_avc [ Timeout ]
-crbug.com/1050754 external/wpt/webmessaging/broadcastchannel/workers.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/webmessaging/multi-globals/broadcastchannel-current.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/webmessaging/multi-globals/broadcastchannel-incumbent.sub.html [ Pass ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-simulcast.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc-extensions/transfer-datachannel-service-worker.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc-insertable-streams/RTCPeerConnection-insertable-streams-simulcast.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCIceConnectionState-candidate-pair.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-operations.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-videoDetectorTest.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/protocol/rtp-clockrate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/protocol/rtp-demuxing.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/protocol/video-codecs.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/basic.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/getStats.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/setParameters-active.https.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/vp8.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/websockets/Close-1000-reason.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1000-reason.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1000-verify-code.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1000-verify-code.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1000.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1000.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1005-verify-code.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1005-verify-code.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1005.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-1005.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-2999-reason.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-2999-reason.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-3000-reason.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-3000-reason.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-3000-verify-code.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-3000-verify-code.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-4999-reason.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-4999-reason.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-Reason-124Bytes.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-Reason-124Bytes.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-onlyReason.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-onlyReason.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-readyState-Closed.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-readyState-Closed.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-readyState-Closing.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-readyState-Closing.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-reason-unpaired-surrogates.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-reason-unpaired-surrogates.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-server-initiated-close.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-server-initiated-close.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-undefined.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Close-undefined.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-asciiSep-protocol-string.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-asciiSep-protocol-string.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-blocked-port.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-blocked-port.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-extensions-empty.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-extensions-empty.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-invalid-urls.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-invalid-urls.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-non-absolute-url.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-non-absolute-url.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-nonAscii-protocol-string.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-nonAscii-protocol-string.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-protocol-with-space.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-protocol-with-space.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.worker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-protocols-repeated.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-protocols-repeated.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-url-with-space.any.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-url-with-space.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-url-with-space.any.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-url-with-space.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-url-with-space.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-url-with-space.any.worker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-array-protocols.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-array-protocols.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-binaryType-blob.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-binaryType-blob.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-protocol-empty.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-protocol-empty.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-protocol-setCorrectly.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-protocol-setCorrectly.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-protocol-string.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-protocol-string.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-protocol.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url-protocol.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-valid-url.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-wrong-scheme.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Create-wrong-scheme.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-0byte-data.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-0byte-data.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-65K-data.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-65K-data.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-before-open.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-before-open.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-65K-arraybuffer.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-65K-arraybuffer.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybuffer.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybuffer.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-float32.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-float32.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-float64.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-float64.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-int16-offset.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-int16-offset.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-int32.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-int32.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-int8.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-int8.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-uint16-offset-length.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-uint16-offset-length.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-uint32-offset.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-uint32-offset.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-uint8-offset-length.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-uint8-offset-length.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-uint8-offset.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-arraybufferview-uint8-offset.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-blob.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-binary-blob.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-data.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-data.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-data.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-null.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-null.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-paired-surrogates.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-paired-surrogates.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-unicode-data.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-unicode-data.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-unpaired-surrogates.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/Send-unpaired-surrogates.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/basic-auth.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/basic-auth.any.serviceworker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/basic-auth.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/basic-auth.any.sharedworker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/basic-auth.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binary/001.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binary/002.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binary/004.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binary/005.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binaryType-wrong-value.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/binaryType-wrong-value.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/bufferedAmount-unchanged-by-sync-xhr.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/bufferedAmount-unchanged-by-sync-xhr.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/bufferedAmount-unchanged-by-sync-xhr.any.sharedworker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/bufferedAmount-unchanged-by-sync-xhr.any.sharedworker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/bufferedAmount-unchanged-by-sync-xhr.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/close-invalid.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/close-invalid.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/001.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/004.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/005.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/007.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/010.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/011.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/012.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/017.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/021.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/cookies/001.html?wss&wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/002.html?wss&wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/005.html?wss&wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/006.html?wss&wpt_flags=https [ Pass ]
-crbug.com/1050754 external/wpt/websockets/eventhandlers.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/eventhandlers.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/extended-payload-length.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/001.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/002.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/007.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/015.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/017.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/events/018.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/send/006.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/opening-handshake/001.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/remove-own-iframe-during-onerror.window.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.serviceworker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.sharedworker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.sharedworker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.serviceworker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.sharedworker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.sharedworker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.serviceworker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.sharedworker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/close.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/close.any.sharedworker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.sharedworker.html?wss [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.worker.html?wpt_flags=h2 [ Failure ]
-crbug.com/1050754 external/wpt/webtransport/constructor.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/webtransport/idlharness.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webtransport/idlharness.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/webtransport/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/webtransport/idlharness.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_create_move.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_delay_creation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_pause_resume_stop.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_states.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrSession_environmentBlendMode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrSession_interactionMode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_dataUnavailable.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_inactiveFrame.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_incorrectUsage.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_luminance_alpha_dataValid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/depth-sensing/depth_sensing_notEnabled.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/nested_fullscreen.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_input_source_recreation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_input_sources_change.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_referenceSpace_reset_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_select.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_select_subframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_squeeze.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/exclusive_requestFrame_nolayer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/gamepads-module/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getInputPose_handedness.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getInputPose_pointer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getViewerPose_emulatedPosition.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hand-input/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_source_cancel.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_inputSources.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_states_regular.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_states_transient.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/idlharness.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/xrRay_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/xrRay_matrix.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/layers/xrWebGLBinding_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrFrame_getLightEstimate_oldSession.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrFrame_getLightEstimate_staleFrame.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrFrame_getLightEstimate_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrSession_getLightProbe_ended.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrSession_getLightProbe_notEnabled.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrSession_getLightProbe_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/light-estimation/xrWebGLBinding_getReflectionCubeMap.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/navigator_xr_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_update.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_vertical_fov_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_vertical_fov_inline.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_create_xrcompatible.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_makecompatible_contextlost.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_makecompatible_reentrant.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webxr-supported-by-feature-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webxr_feature_policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrBoundedReferenceSpace_updates.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_disconnect_ends.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_isSessionSupported_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_isSessionSupported_immersive_unsupported.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_isSessionSupported_inline.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_immersive_no_gesture.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_immersive_unsupported.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_no_mode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_optionalFeatures.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_requiredFeatures_unknown.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_getPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_getViewerPose_getPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_getViewerPose_getPose_identities.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_lifetime.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_session_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_add_remove.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_emulatedPosition.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_profiles.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrPose_transform_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffset.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffsetBounded.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffset_viewer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_relationships.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_inverse.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_matrix.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_cancelAnimationFrame.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_end.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_features_deviceSupport.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_input_events_end.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_prevent_multiple_exclusive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_callback_calls.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_data_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_timestamp.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestReferenceSpace.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestReferenceSpace_features.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestSessionDuringEnd.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_viewer_availability.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_viewer_referenceSpace.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_visibilityState.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_eyes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_match.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_oneframeupdate.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrViewerPose_views_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrViewport_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_draw.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_scale.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_opaque_framebuffer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_viewports.https.html [ Failure ]
-crbug.com/1050754 external/wpt/window-segments/getWindowSegments.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-MessageEvent-source.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-constructor.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-detach-frame-in-error-event.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-exception-propagation.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-exception.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-replace-EventHandler.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-script-error.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-simple.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorkerPerformanceNow.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker_blobUrl.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker_dataUrl.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/Worker-base64.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-constructor-proto.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-custom-event.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-location.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-event-handler.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-global-constructor.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-self.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-timeout-decreasing-order.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/WorkerNavigator-hardware-concurrency.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/WorkerNavigator.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/abrupt-completion.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/baseurl/alpha/importScripts-in-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/baseurl/alpha/xhr-in-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/Infinity-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/NaN-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/URLMismatchError.htm [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/dummy-name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/dummy-shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/empty-name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/global-members.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/no-arguments-ctor.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/null-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/number-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-onmessage.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-properties.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-readonly.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/same-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/undefined-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/unexpected-global-properties.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/data-url-shared.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/examples/general.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/examples/onconnect.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/importscripts_mime.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/getting.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/location/redirect-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/location/returns-same-object.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/self.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/catch.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-redirect-to-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-same-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-redirect-to-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-same-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-blob-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-csp.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-data-url-cross-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-data-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-referrer.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-options-credentials.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-options-type.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-parse-error-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/name-property.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/encodings/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/interface-objects/004.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/001.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/008.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/exposure.any.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/001.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/002.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/run-a-worker/002.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/run-a-worker/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/structured-clone/shared.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/006.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-from-blob-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-in-data-url-context.window.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/workers/shared-worker-name-via-options.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-options-mismatch.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-parse-error-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/paint-worklet-service-worker-interception.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/abort-after-send.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/abort-during-upload.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/access-control-preflight-headers-sync.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/event-timeout-order.any.worker.html [ Crash Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/formdata/constructor.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/formdata/constructor.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/getresponseheader-unsent-opened-state.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/open-url-redirected-sharedworker-origin.htm [ Failure ]
-crbug.com/1050754 external/wpt/xhr/over-1-meg.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/over-1-meg.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/sync-no-timeout.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/xhr/xhr-timeout-longtask.any.html [ Failure Pass ]
-
-# update on Jun 2nd
-crbug.com/1050754 external/wpt/eventsource/eventsource-constructor-empty-url.any.sharedworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.negative.rotation.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.positive.rotation.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/resource-timing/sizes-cache.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/resource-timing/sizes-redirect.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/subresource-loading/csp-blocked.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback.html [ Timeout ]
-
-# update on 06/03/2021
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html [ Failure ]
-crbug.com/1050754 external/wpt/uievents/interface/keyboard-accesskey-click-event.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webcodecs/image-decoder.https.any.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebviewWPTExpectations b/third_party/blink/web_tests/android/WebviewWPTExpectations
deleted file mode 100644
index 8566a2f..0000000
--- a/third_party/blink/web_tests/android/WebviewWPTExpectations
+++ /dev/null
@@ -1,5280 +0,0 @@
-# results: [ Failure Crash Timeout Pass Skip ]
-
-# This file will be used to add override expectations for WPT tests when running on Webview.
-# Expectations with bug crbug.com/1050754 were created as preliminary expectations in CL
-# crrev.com/c/2070826. Several test expectations below will be moved to the AndroidWPTNeverFixTests
-# file. When the test failures below are triaged, new bugs will be created and we will change the
-# bug for the expectation to the new bug.
-
-# COEP used not to be enabled on Webview.
-# TODO(arthursonzogni): COEP has now been enabled:
-# https://chromium-review.googlesource.com/c/chromium/src/+/2485507
-# Check again those tests. They might pass.
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/blob.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html [ Pass Timeout ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/cache-storage-reporting-service-worker.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/coep-frame-javascript.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/coep-on-response-from-service-worker.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/data.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/dedicated-worker-cache-storage.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/dedicated-worker.https.html [ Pass Timeout ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/javascript.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/none-sw-from-require-corp.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/none.https.html [ Failure Timeout ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/report-only-require-corp.https.html [ Timeout ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html [ Failure ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/require-corp-about-blank.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/require-corp-about-srcdoc.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/require-corp-load-from-cache-storage.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/require-corp-sw-from-require-corp.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/require-corp-sw.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/require-corp.https.html [ Timeout ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/sandbox.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/service-worker-cache-storage.https.html [ Failure Pass ]
-crbug.com/1140432 external/wpt/html/cross-origin-embedder-policy/srcdoc.https.html [ Failure Pass ]
-
-# COOP is not enabled on webview yet. See https://crbug.com/1179201
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/blob-popup.https.html [ Failure Pass ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coep-blob-popup.https.html [ Pass Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https.html?0-1 [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https.html?2-3 [ Failure Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coep-navigate-popup.https.html?4-last [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coep-redirect.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coep.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coop-csp-sandbox.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coop-navigated-popup.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/coop-sandbox.https.html [ Failure Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/header-parsing.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/javascript-url.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/no-https.html [ Failure Pass ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-coop-by-sw-from-coop.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-coop-by-sw.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-redirect-same-origin-allow-popups.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/popup-with-structured-header.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html [ Crash Pass Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro_cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro_cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-blur.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-close.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-closed.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-focus.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-frames.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-indexed-getter.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-length.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-get.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-set.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-named-getter.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-get.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-set.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-1.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-2.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-self.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-top.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-window.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/report-to-both_coop-ro.https.html [ Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html [ Failure Timeout ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-four-reports.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-from-unsafe-none.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin-report-to.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/report-only-same-origin.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-coop-navigated-popup.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-allow-popups-report-to.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-coep-report-to.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin-report-to.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-same-origin.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/reporting/navigation-reporting/reporting-popup-unsafe-none-report-to.https.html [ Failure ]
-crbug.com/1179201 external/wpt/html/cross-origin-opener-policy/resource-popup.https.html [ Timeout ]
-
-# https://crbug.com/154571: SharedWorker is not supported on Android.
-crbug.com/1190392 external/wpt/trusted-types/WorkerGlobalScope-eval.html [ Failure ]
-crbug.com/1190392 external/wpt/trusted-types/WorkerGlobalScope-importScripts.html [ Failure ]
-crbug.com/1190392 external/wpt/trusted-types/worker-constructor.https.html [ Failure ]
-
-# Add untriaged failures in this block
-crbug.com/1050754 external/wpt/FileAPI/file/File-constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/FileAPI/historical.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/FileAPI/reading-data-section/filereader_events.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/FileAPI/reading-data-section/filereader_events.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/FileAPI/reading-data-section/filereader_result.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/FileAPI/url/sandboxed-iframe.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/FileAPI/url/url-charset.window.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/FileAPI/url/url-in-tags-revoke.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/FileAPI/url/url-reload.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/IndexedDB/file_support.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/idbobjectstore-rename-abort.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/IndexedDB/idbobjectstore_putall.tentative.any.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/idbobjectstore_putall.tentative.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-indexes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-store-cursors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/key-generators/reading-autoincrement-store.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/IndexedDB/transaction-abort-generator-revert.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?3001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/hkdf.https.any.worker.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/hkdf.https.any.worker.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/hkdf.https.any.worker.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/hkdf.https.any.worker.html?3001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?4001-5000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?5001-6000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?6001-7000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?7001-8000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.html?8001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?4001-5000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?5001-6000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?6001-7000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?7001-8000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html?8001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/encrypt_decrypt/aes_cbc.https.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/encrypt_decrypt/aes_ctr.https.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/encrypt_decrypt/aes_gcm.https.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_cbc.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/failures_AES-CBC.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/failures_AES-CTR.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/failures_AES-GCM.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/failures_AES-KW.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/failures_AES-KW.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/successes_AES-CBC.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/successes_AES-CTR.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/successes_AES-GCM.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/successes_AES-KW.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/generateKey/successes_AES-KW.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/import_export/rsa_importKey.https.worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/import_export/symmetric_importKey.https.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/import_export/test_rsa_importKey.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/WebCryptoAPI/import_export/test_symmetric_importKey.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer-disabled-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy-attribute.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer-enabled-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer-enabled-on-self-origin-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer-iframe-access.https.html [ Failure ]
-crbug.com/1050754 external/wpt/accelerometer/Accelerometer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/accelerometer/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/ambient-light/AmbientLightSensor-disabled-by-feature-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html [ Failure ]
-crbug.com/1050754 external/wpt/ambient-light/AmbientLightSensor-enabled-by-feature-policy-attribute.https.html [ Failure ]
-crbug.com/1050754 external/wpt/ambient-light/AmbientLightSensor-enabled-by-feature-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/ambient-light/AmbientLightSensor-enabled-on-self-origin-by-feature-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/ambient-light/AmbientLightSensor-iframe-access.https.html [ Failure ]
-crbug.com/1050754 external/wpt/ambient-light/AmbientLightSensor-supported-by-feature-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/ambient-light/AmbientLightSensor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/ambient-light/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/animate-multiple-effects-on-different-targets-via-main-thread.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/animate-non-accelerated-property.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/animation-worklet-inside-iframe.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/animation-worklet/animator-with-options.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/cancel-non-accelerated-property.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/current-time.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/idlharness.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/animation-worklet/idlharness.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/animation-worklet/inactive-timeline.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/multiple-effects-on-same-target-driven-by-individual-local-time.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/playback-rate.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/scroll-timeline-writing-modes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/stateful-animator.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-animator-name.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-creation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-duration.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-get-computed-timing-progress-on-worklet-thread.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-local-time-null-1.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-pause.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-play.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-with-effects-from-different-frames.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-with-fill-mode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-with-invalid-effect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/animation-worklet/worklet-animation-without-target.https.html [ Failure ]
-crbug.com/1050754 external/wpt/audio-output/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/audio-output/setSinkId.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/background-fetch/abort.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/content-security-policy.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/fetch-uploads.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/fetch.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/get-ids.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/get.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/idlharness.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/idlharness.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/idlharness.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/match.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/mixed-content-and-allowed-schemes.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/port-blocking.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/background-fetch/update-ui.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/badging/idlharness.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/badging/idlharness.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/battery-status/battery-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/battery-status/battery-default-feature-policy.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/battery-status/battery-disabled-by-feature-policy.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/battery-status/battery-disallowed-in-cross-origin-iframe.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/battery-status/battery-insecure-context.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/beacon/beacon-redirect.sub.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-absent-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-added-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-off-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-on-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-powered-on-off-on-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/adapter-removed-getAvailability.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/adapter/cross-origin-iframe-getAvailability.sub.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/characteristicProperties.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-descriptor-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptor/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-descriptor-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/getDescriptors/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/notifications/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/notifications/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/add-multiple-event-listeners.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/event-is-fired.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/read-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/read-updates-value.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/readValue/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/service-same-from-2-characteristics.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/service-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/startNotifications/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValue/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithResponse/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/gen-characteristic-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/characteristic/writeValueWithoutResponse/write-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/readValue/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/readValue/read-succeeds.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/writeValue/buffer-is-detached.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/descriptor/writeValue/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-before-watchAdvertisements.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-pending-operation.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-signal-stops-events.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/abort-subsequent-watchAdvertisements-call-stops-events.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/advertisementreceived-event-fired.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/concurrent-watchAdvertisements-calls.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/service-and-manufacturer-data-filtered-from-event.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/subsequent-watchAdvertisements-call.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/watching-two-devices-abort-one-watchAdvertisements.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/device/watchAdvertisements/watching-two-devices.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/granted-devices-with-services.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/no-granted-devices.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/getDevices/returns-same-bluetooth-device-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/idl/idlharness.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-called-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-discovery-complete-service-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-garbage-collection-ran-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-get-different-service-after-reconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryService/gen-service-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-called-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-discovery-complete-service-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-garbage-collection-ran-during-success.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-different-service-after-reconnection.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-reconnect-during.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristic/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-get-same-object.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-reconnect-during.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed-with-uuid.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/bluetooth/service/getCharacteristics/gen-service-is-removed.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/clear-site-data/executionContexts.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-answers.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-cache-revalidation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-feature-policy-navigation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-feature-policy.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-no-feature-policy-navigation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-no-feature-policy.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-iframe-redirect-with-fp-delegation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-navigation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-subresource-redirect-with-fp-delegation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-subresource-redirect.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-subresource-with-feature-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/cross-origin-syncxhr-redirect.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/http-equiv-cross-origin-navigation.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/http-equiv-same-origin-iframe.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/http-equiv-same-origin-navigation.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/same-origin-iframe.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/same-origin-navigation-no-accept-ch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/same-origin-navigation-redirect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/same-origin-navigation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/accept-ch-stickiness/same-origin-subresource-redirect-opted-in.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/critical-ch/navigation.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/critical-ch/request-count.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/http-equiv-accept-ch-merge.https.html [ Failure ]
-crbug.com/1050754 external/wpt/client-hints/sec-ch-ua.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-html-script-removal.https.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-navigator-clipboard-basics.https.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-svg-script-removal.https.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-blobs-read-blobs.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-html-read-html.https.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-image-read-image.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/async-write-svg-read-svg.https.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/clipboard-item.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/clipboard-apis/detached-iframe/read-on-detaching-iframe.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/detached-iframe/write-on-detaching-iframe.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/detached-iframe/write-read-on-detached-iframe.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/detached-iframe/writeText-readText-on-detached-iframe.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-disabled-by-feature-policy.tentative.https.sub.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-attribute-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy-cross-origin-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-by-feature-policy.tentative.https.sub.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-read/clipboard-read-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-disabled-by-feature-policy.tentative.https.sub.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-cross-origin-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-attribute-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy-cross-origin-tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-by-feature-policy.tentative.https.sub.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/feature-policy/clipboard-write/clipboard-write-enabled-on-self-origin-by-feature-policy.tentative.https.sub.html [ Crash ]
-crbug.com/1050754 external/wpt/clipboard-apis/permissions/readText-denied.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/permissions/readText-granted.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/permissions/writeText-denied.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/permissions/writeText-granted.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/text-write-read/async-write-read.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/text-write-read/async-write-readText.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/text-write-read/async-writeText-read.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/clipboard-apis/text-write-read/async-writeText-readText.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/compat/webkit-gradient-comma.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-bad-chunks.tentative.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-including-empty-chunk.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-multiple-chunks.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-output-length.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/compression-stream.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-buffersource.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-constructor-error.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-correct-input.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-empty-input.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-split-chunk.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/compression/decompression-uint8array-output.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/contacts/contacts-select.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/content-index/content-index.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/content-index/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/connect-src/worker-connect-src-blocked.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/connect-src/worker-from-guid.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/form-action/form-action-src-default-ignored.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/form-action/form-action-src-redirect-blocked.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/frame-src/frame-src-same-document.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/generic/filesystem-urls-do-not-match-self.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/generic/filesystem-urls-match-filesystem.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/generic/no-default-src.sub.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/inheritance/window.html [ Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/inside-worker/shared-inheritance.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/inside-worker/shared-script.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/media-src/media-src-7_1.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/media-src/media-src-redir-bug.sub.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/child-navigates-parent-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/form-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/form-cross-origin-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/form-redirected-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/href-location-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/href-location-cross-origin-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/href-location-redirected-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/link-click-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/meta-refresh-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/meta-refresh-cross-origin-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/meta-refresh-redirected-blocked.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/parent-navigates-child-blocked.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/spv-only-sent-to-initiator.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/navigate-to/unsafe-allow-redirects/blocked-end-of-chain.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/navigation/javascript-url-navigation-inherits-csp.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/object-src/object-src-no-url-allowed.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/object-src/object-src-url-allowed.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/object-src/object-src-url-embed-allowed.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/object-src/object-src-url-redirect-allowed.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/prefetch-src/prefetch-blocked.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/prefetch-src/prefetch-header-blocked.html [ Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting/report-multiple-violations-01.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting/report-only-in-meta.sub.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/reporting/report-same-origin-with-cookies.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-3.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-7.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/hash-always-converted-to-utf-8/iso-8859-9.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/script-src-1_10.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/script-src-strict_dynamic_double_policy_honor_source_expressions.html [ Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/script-src-strict_dynamic_hashes.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/script-src-strict_dynamic_in_img-src.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/script-src-strict_dynamic_worker.https.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/scripthash-unicode-normalization.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/worker-importscripts-blocked.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/script-src/worker-set-timeout-blocked.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/blockeduri-eval.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/blockeduri-inline.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/img-src-redirect-upgrade-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/inside-dedicated-worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/inside-service-worker.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/inside-shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/content-security-policy/securitypolicyviolation/targeting.html [ Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/style-src/style-blocked.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/style-src/style-src-multiple-policies-multiple-hashing-algorithms.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-child.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-fallback.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-list.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-none.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-self.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-worker-src-child-fallback-blocked.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-worker-src-child-fallback.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-worker-src-default-fallback.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-worker-src-script-fallback.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/content-security-policy/worker-src/shared-worker-src-self-fallback.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/cookie-store/change_eventhandler_for_document_cookie.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/change_eventhandler_for_http_cookie_and_set_cookie_headers.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/change_eventhandler_for_no_name_and_no_value.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/change_eventhandler_for_no_name_equals_in_value.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/change_eventhandler_for_no_name_multiple_values.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieListItem_attributes.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieListItem_attributes.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStoreManager_getSubscriptions_empty.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_delete_arguments.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_delete_arguments.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_delete_basic.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_delete_basic.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_event_arguments.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_event_basic.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_event_delete.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_event_overwrite.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_getAll_arguments.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_getAll_arguments.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_getAll_multiple.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_getAll_multiple.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_getAll_set_basic.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_getAll_set_basic.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_arguments.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_arguments.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_delete_basic.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_delete_basic.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_set_across_frames.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_set_across_origins.tentative.sub.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_set_basic.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_set_basic.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_set_ordering.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_get_set_ordering.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_in_detached_frame.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_opaque_origin.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_set_arguments.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_set_arguments.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_special_names.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_special_names.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_subscribe_arguments.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_subscribe_arguments.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/cookieStore_subscriptions_empty.tentative.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/encoding.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/encoding.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/httponly_cookies.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/idlharness.tentative.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/idlharness.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/idlharness.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/cookie-store/serviceworker_cookieStore_cross_origin.tentative.https.sub.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/cookie-store/serviceworker_cookieStore_subscriptions_reset.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/serviceworker_cookiechange_eventhandler_mismatched_subscription.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/serviceworker_cookiechange_eventhandler_multiple_subscriptions.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/serviceworker_cookiechange_eventhandler_overlapping_subscriptions.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/serviceworker_cookiechange_eventhandler_single_subscription.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookie-store/serviceworker_oncookiechange_eventhandler_single_subscription.tentative.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/domain/domain-attribute-missing.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/http-state/chromium-tests.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/http-state/domain-tests.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/http-state/mozilla-tests.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/http-state/name-tests.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/http-state/ordering-tests.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/http-state/path-tests.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cookies/prefix/__host.header.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/cookies/prefix/__secure.header.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite-none-secure/cookies-without-samesite-must-be-secure.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/about-blank-subresource.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/cookies/samesite/about-blank-toplevel.https.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/cookies/samesite/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/form-get-blank-reload.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/form-post-blank-reload.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/form-post-blank.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/iframe-reload.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/iframe.document.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/iframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/img.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/sandbox-iframe-nested.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/sandbox-iframe-subresource.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/setcookie-lax.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/samesite/window-open-reload.https.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/schemeful-same-site/schemeful-iframe-subresource.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/schemeful-same-site/schemeful-navigation.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/schemeful-same-site/schemeful-subresource.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/cookies/schemeful-same-site/schemeful-websockets.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/cors-rfc1918/address-space.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/cors-rfc1918/address-space.window.html [ Failure ]
-crbug.com/1050754 external/wpt/cors/304.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/cors/access-control-expose-headers-parsing.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/cors/basic.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/cors/preflight-cache.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/cors/preflight-failure.htm [ Failure ]
-crbug.com/1050754 external/wpt/cors/status-async.htm [ Failure ]
-crbug.com/1050754 external/wpt/cors/status-preflight.htm [ Failure ]
-crbug.com/1050754 external/wpt/credential-management/federatedcredential-framed-get.sub.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/credential-management/otpcredential-get-basics.https.html [ Failure ]
-crbug.com/1050754 external/wpt/credential-management/otpcredential-iframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/credential-management/passwordcredential-framed-get.sub.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/CSS2/linebox/animations/line-height-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html [ Failure ]
-crbug.com/1050754 external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/compositing/parsing/background-blend-mode-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-align/animation/column-gap-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-align/animation/column-gap-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-align/animation/row-gap-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-align/animation/row-gap-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/AnimationEffect-getComputedTiming.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/AnimationEffect-updateTiming.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-animationName.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-canceling.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-compositeOrder.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-effect.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-finished.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-getCurrentTime.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-id.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-pausing.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-playState.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-ready.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/CSSAnimation-startTime.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/Document-getAnimations.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-animations/Element-getAnimations.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/KeyframeEffect-getKeyframes.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/KeyframeEffect-setKeyframes.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/KeyframeEffect-target.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/animation-before-initial-box-construction-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/animationevent-marker-pseudoelement.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/css/css-animations/event-dispatch.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/event-order.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/parsing/animation-name-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/parsing/animation-name-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-animations/parsing/animation-shorthand.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-animations/pending-style-changes-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/background-color-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/background-image-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/background-position-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/background-position-origin-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/background-position-x-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/background-position-y-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/background-size-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-bottom-left-radius-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-bottom-right-radius-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-color-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-outset-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-outset-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-interpolation-stability.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-slice-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-source-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-width-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-image-width-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-radius-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-top-left-radius-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-top-right-radius-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/border-width-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/box-shadow-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/animations/box-shadow-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/background-332.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/inheritance.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/parsing/background-image-computed.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/parsing/background-position-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/parsing/background-position-x-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/parsing/background-position-x-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/parsing/background-position-y-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/parsing/border-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-backgrounds/parsing/border-width-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/margin-bottom-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/margin-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/margin-left-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/margin-right-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/margin-top-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/padding-bottom-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/padding-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/padding-left-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/padding-right-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/animation/padding-top-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-box/parsing/clear-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-box/parsing/clear-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-box/parsing/float-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-box/parsing/float-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-break/animation/orphans-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/animation/widows-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/parsing/box-decoration-break-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/parsing/box-decoration-break-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/parsing/break-after-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/parsing/break-after-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/parsing/break-before-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/parsing/break-before-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/parsing/break-inside-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/parsing/break-inside-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-break/relpos-inline-hit-testing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-cascade/all-prop-initial-xml.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-cascade/revert-val-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-color-adjust/parsing/color-scheme-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-color-adjust/parsing/color-scheme-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-color-property.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-root-background.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-color/animation/color-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-color/animation/color-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-color/animation/opacity-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-conditional/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-contain/contain-size-grid-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-content/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-display/display-math-on-non-mathml-elements.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-display/display-math-on-pseudo-elements-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-display/parsing/display-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-easing/step-timing-functions-syntax.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/animation/flex-basis-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/animation/flex-basis-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/animation/flex-grow-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/animation/flex-shrink-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/animation/order-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/flex-aspect-ratio-img-column-017.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-basis-0percent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-shorthand-number.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/hittest-overlapping-order.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-flexbox/negative-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-flexbox/parsing/flex-basis-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-font-loading/idlharness.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/animations/font-size-adjust-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/animations/font-size-interpolation-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/animations/font-variation-settings-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/animations/font-variation-settings-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/fallback-url-to-local.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/font-face-range-order.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/font-variant-alternates-parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/font-variation-settings-serialization-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/generic-family-keywords-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/math-script-level-and-math-style/math-script-level-001.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/math-script-level-and-math-style/math-script-level-002.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/math-script-level-and-math-style/math-script-level-004.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/math-script-level-and-math-style/math-style-001.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-family-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-family-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-language-override-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-language-override-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-size-adjust-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-size-adjust-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-style-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-variant-position-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-variant-position-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/parsing/font-variant-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/test_font_feature_values_parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/at-font-face-descriptors.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/at-font-face-font-matching.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/font-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/font-stretch.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/font-style-interpolation.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/font-style-parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-fonts/variations/font-weight-parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-forced-color-adjust/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-forced-color-adjust/parsing/forced-color-adjust-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-forced-color-adjust/parsing/forced-color-adjust-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/abspos/grid-positioned-items-content-alignment-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/abspos/grid-sizing-positioned-items-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-align-content-distribution-vertical-lr.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-align-content-distribution-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-align-content-distribution.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-006.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-007.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-008.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-009.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-alignment-implies-size-change-010.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-006.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-008.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-011.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-017.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-content-alignment-and-self-alignment-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-content-alignment-second-pass-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-content-alignment-second-pass-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-gutters-and-alignment.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-006.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-007.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-008.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-009.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-010.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-011.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-012.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-016.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-017.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-007.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-008.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-013.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-014.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/alignment/grid-self-baseline-not-applied-if-sizing-cyclic-dependency-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/animation/grid-template-columns-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/animation/grid-template-rows-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/flex-content-resolution-rows-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/flex-content-resolution-rows-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-auto-repeat-max-size-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-change-fit-content-argument-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-inline-support-flexible-lengths-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-inline-support-grid-template-columns-rows-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-inline-support-named-grid-lines-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-inline-support-repeat-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-limits-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-support-flexible-lengths-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-support-grid-template-columns-rows-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-support-named-grid-lines-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-support-repeat-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-definition/grid-template-columns-rows-resolved-values-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-items/grid-minimum-size-grid-items-021.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/grid-model/grid-gutters-and-tracks-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/layout-algorithm/grid-content-distribution-must-account-for-track-sizing-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/layout-algorithm/grid-flex-track-intrinsic-sizes-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/layout-algorithm/grid-intrinsic-size-with-orthogonal-items.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-grid/parsing/grid-area-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/parsing/grid-auto-flow-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/parsing/grid-auto-flow-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/parsing/grid-shorthand-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/parsing/grid-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/parsing/grid-template-columns-computed-nogrid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/parsing/grid-template-rows-computed-nogrid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/parsing/grid-template-shorthand-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-grid/subgrid/grid-template-computed-nogrid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-images/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-images/image-set/image-set-parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-images/parsing/image-rendering-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-images/parsing/image-rendering-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-images/parsing/image-resolution-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-images/parsing/object-fit-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-images/parsing/object-fit-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-inline/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-inline/parsing/alignment-baseline-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-inline/parsing/alignment-baseline-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-inline/parsing/alignment-baseline-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-inline/parsing/baseline-shift-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-inline/parsing/baseline-shift-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-inline/parsing/dominant-baseline-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-inline/parsing/dominant-baseline-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-layout-api/at-supports-rule.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-layout-api/computed-style-layout-function.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-layout-api/crash-multicol.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-layout-api/inline-style-layout-function.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-layout-api/layout-child/inlines-dynamic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-layout-api/supports.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-layout-api/sync-layout-microtasks.https.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-lists/animations/list-style-image-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-lists/parsing/content-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-lists/parsing/counter-set-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-lists/parsing/list-style-image-computed.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-lists/parsing/list-style-type-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-lists/parsing/list-style-type-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/animation-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/animation-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/animation-003.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/getComputedStyle-listing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-border-color.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-border-radius.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-border-shorthands.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-border-style.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-border-width.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-inset.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-margin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-padding.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-box-size.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-values-float-clear.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-logical/logical-values-resize.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-block-color-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-block-color-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-block-style-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-block-style-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-block-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-block-width-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-block-width-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-inline-color-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-inline-color-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-inline-style-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-inline-style-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-inline-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-inline-width-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/border-inline-width-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/inset-block-inline-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/inset-block-inline-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/inset-block-inline-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/inset-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/inset-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/inset-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/margin-block-inline-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/margin-block-inline-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/margin-block-inline-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/padding-block-inline-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/padding-block-inline-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-logical/parsing/padding-block-inline-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/animations/clip-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/animations/clip-path-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/animations/clip-path-interpolation-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/animations/clip-path-interpolation-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/animations/mask-image-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/animations/mask-position-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/inheritance.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/parsing/clip-path-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/parsing/mask-position-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-masking/parsing/mask-valid.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-multicol/animation/column-count-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-multicol/animation/column-rule-color-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-multicol/animation/column-rule-width-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-multicol/animation/column-width-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-multicol/balance-table-with-fractional-height-row.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/getclientrects-000.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/getclientrects-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/inheritance.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/multicol-gap-percentage-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/parsing/column-fill-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-multicol/parsing/column-fill-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-multicol/parsing/column-rule-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-multicol/parsing/column-rule-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-multicol/parsing/column-rule-width-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-overflow/logical-overflow-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/overflow-padding.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/parsing/block-ellipsis-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-overflow/parsing/continue-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-overflow/parsing/line-clamp-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-overflow/parsing/max-lines-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-overflow/parsing/overflow-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/parsing/overflow-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/parsing/scrollbar-gutter-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-overflow/parsing/webkit-line-clamp-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-overflow/scrollable-overflow-self-collapsing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-page/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-page/page-rule-declarations-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-page/parsing/page-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-page/parsing/page-orientation-computed.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-page/parsing/page-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-paint-api/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-parser-api/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/animations/bottom-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/animations/bottom-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/animations/left-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/animations/left-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/animations/right-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/animations/right-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/animations/top-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/animations/top-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/parsing/inset-after-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/parsing/inset-after-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/parsing/inset-before-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/parsing/inset-before-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/parsing/inset-end-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/parsing/inset-end-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/parsing/inset-start-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/parsing/inset-start-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/position-absolute-replaced-minmax.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-absolute-table-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-bottom.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-get-bounding-client-rect.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-input-box-gets-focused-after-scroll.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-nested-bottom.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-nested-right.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-offset-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-offset-top-left.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-parsing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-right.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-position/position-sticky-transforms-translate.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/at-property.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/register-property-syntax-parsing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/registered-property-computation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/registered-property-initial.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/self-utils.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/typedom.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-properties-values-api/unit-cycles.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-pseudo/first-letter-allowed-properties.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-pseudo/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-pseudo/marker-animate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-pseudo/marker-computed-content.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-pseudo/marker-computed-size.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-pseudo/marker-default-styles.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-pseudo/marker-display-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-pseudo/marker-hit-testing.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/css/css-pseudo/marker-intrinsic-contribution-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-pseudo/parsing/marker-supported-properties-in-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-pseudo/parsing/marker-supported-properties.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-pseudo/parsing/target-text.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-pseudo/parsing/tree-abiding-pseudo-elements.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-pseudo/target-text-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-pseudo/text-selection.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/css/css-ruby/line-break-around-ruby-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ruby/line-spacing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scoping/keyframes-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-scoping/keyframes-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-scoping/slotted-parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/abspos-containing-block-outside-scroller.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/abspos-contributes-to-static-parent-bounds.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/ancestor-change-heuristic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/anchor-inside-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/anchor-updates-after-explicit-scroll.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/anchoring-with-bounds-clamping-div.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/anchoring-with-bounds-clamping.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/anonymous-block-box.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/basic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/clamp-negative-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/clipped-scrollers-skipped.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/contain-paint-offscreen-container.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/descend-into-container-with-float.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/descend-into-container-with-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/device-pixel-adjustment.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/exclude-fixed-position.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/exclude-inline.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/exclude-sticky.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/focus-prioritized.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/fragment-scrolling-anchors.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/history-restore-anchors.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/image-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/inline-block-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/inline-block.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/multicol-fragmented-anchor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/negative-layout-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/opt-out-dynamic-scroller.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/opt-out-dynamic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/opt-out-inner-table.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/opt-out-table.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/opt-out.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/position-change-heuristic-display-none-change.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/position-change-heuristic-display-none-to-abspos-change.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/position-change-heuristic-in-nested-scroll-box.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/position-change-heuristic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/reading-scroll-forces-anchoring.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/scroll-padding-affects-anchoring.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/start-edge-in-block-layout-direction.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/subtree-exclusion.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/text-anchor-in-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-anchoring/wrapped-text.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/input/keyboard.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/nested-scrollIntoView-snaps.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/no-snap-position.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/overflowing-snap-areas.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/scroll-margin.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/scroll-snap-stop.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/scroll-snap-type-change.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/scroll-snap-type-on-root-element.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/scroll-snap-type.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-after-relayout/adding-only-snap-area.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-after-relayout/adding-snap-area-while-snapped.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-align.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-after-relayout/move-current-target.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-after-relayout/remove-current-target.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-area-capturing-add-scroll-container.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-area-capturing-remove-scroll-container.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-inline-block.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-to-transformed-target.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-to-visible-areas-margin-x-axis.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scroll-snap/snap-to-visible-areas-margin-y-axis.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-scrollbars/scrollbar-width-parsing.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shadow-parts/interaction-with-pseudo-elements.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/animation/shape-image-threshold-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/animation/shape-margin-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/animation/shape-margin-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/animation/shape-outside-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/animation/shape-outside-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/parsing/shape-outside-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/parsing/shape-outside-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-margin-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-margin-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-margin-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-margin-005.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-010.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-circle-011.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-computed-shape-000.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-010.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-ellipse-011.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-inset-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-inset-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-inset-008.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-inset-009.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-polygon-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-polygon-006.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-arguments-000.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-shapes/shape-outside/values/shape-outside-shape-box-pair-000.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-size-adjust/animations/text-size-adjust-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/height-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/height-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/max-height-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/max-height-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/max-width-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/max-width-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/min-height-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/min-height-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/min-width-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/min-width-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/width-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/animation/width-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/aspect-ratio/quirks-mode-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-sizing/contain-intrinsic-size/parsing/contain-intrinsic-size-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-sizing/parsing/height-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/parsing/max-height-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/parsing/max-width-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/parsing/min-height-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/parsing/min-height-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/parsing/min-width-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/parsing/min-width-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-sizing/parsing/width-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-syntax/charset/page-windows-1251-charset-attribute-bogus.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-syntax/decimal-points-in-numbers.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-syntax/declarations-trim-whitespace.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-syntax/input-preprocessing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-syntax/serialize-consecutive-tokens.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-syntax/unicode-range-selector.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-syntax/urange-parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/absolute-tables-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/absolute-tables-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/absolute-tables-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/absolute-tables-005.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/animations/border-spacing-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/border-spacing-included-in-sizes-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/bounding-box-computation-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/bounding-box-computation-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/bounding-box-computation-3.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/fixed-layout-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/fixed-layout-excess-width-distribution-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/height-distribution/computing-row-measure-0.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/height-distribution/computing-row-measure-1.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/html-to-css-mapping-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/html-to-css-mapping-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/html5-table-formatting-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/html5-table-formatting-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/html5-table-formatting-fixed-layout-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/inheritance.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/parsing/border-spacing-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/parsing/border-spacing-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/table-model-fixup-2.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/table-model-fixup.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-col-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-col-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-col-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-col-004-dynamic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-col-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-colspan-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-colspan-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-row-002-dynamic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-row-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-rowcol-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-rowcol-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-rowspan-002-border-separate.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-rowspan-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-collapse-rowspan-004-dynamic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-hidden-row-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/visibility-hidden-row-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-tables/width-distribution/computing-column-measure-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/parsing/text-decoration-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/parsing/text-decoration-line-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/parsing/text-decoration-line-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/parsing/text-decoration-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/parsing/text-decoration-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/parsing/text-underline-position-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/parsing/text-underline-position-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/text-decoration-serialization.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/text-decoration-skip-ink.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/text-decoration-thickness-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/text-decoration-thickness-initial.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/text-decoration-thickness-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/text-underline-offset-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/text-underline-offset-initial.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text-decor/text-underline-offset-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/animations/letter-spacing-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/animations/letter-spacing-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/animations/text-indent-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/animations/text-indent-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/animations/word-spacing-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/animations/word-spacing-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/css3-text-line-break-baspglwj-026.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/ja/css-text-line-break-ja-in-loose.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/ja/css-text-line-break-ja-pr-normal.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/ja/css-text-line-break-ja-pr-strict.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/other-lang/css-text-line-break-de-in-loose.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/other-lang/css-text-line-break-de-pr-loose.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/other-lang/css-text-line-break-de-pr-normal.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/other-lang/css-text-line-break-de-pr-strict.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/unknown-lang/css-text-line-break-cj-strict.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/unknown-lang/css-text-line-break-in-loose.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/unknown-lang/css-text-line-break-iteration-loose.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/unknown-lang/css-text-line-break-pr-loose.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/unknown-lang/css-text-line-break-pr-normal.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/unknown-lang/css-text-line-break-pr-strict.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/zh/css-text-line-break-zh-in-loose.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/zh/css-text-line-break-zh-pr-normal.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/i18n/zh/css-text-line-break-zh-pr-strict.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/hanging-punctuation-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/tab-size-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-align-all-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-align-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-align-last-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-align-last-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-align-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-indent-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-indent-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-justify-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-justify-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-transform-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/text-transform-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-detection-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-detection-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-expansion-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/parsing/word-boundary-expansion-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/tab-size/tab-size.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/text-align/text-align-last-empty-inline.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/seg-break-transformation-001.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/seg-break-transformation-002.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/seg-break-transformation-003.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/seg-break-transformation-004.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/seg-break-transformation-008.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/seg-break-transformation-009.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/trailing-space-position-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-text/white-space/white-space-collapse-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/3d-rendering-context-behavior.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/composited-transform.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/list-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/perspective-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/perspective-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/perspective-origin-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/rotate-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/rotate-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/scale-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/scale-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-interpolation-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-interpolation-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-interpolation-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-interpolation-006.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-matrix-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-origin-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-perspective-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-rotate-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-scale-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-skew-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/transform-translate-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/animation/translate-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/parsing/rotate-parsing-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/parsing/scale-parsing-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/parsing/transform-box-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/parsing/transform-box-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transforms/preserve-3d-flat-grouping-properties.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/transform-origin-014.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/transform-percent-009.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/transform-scale-hittest.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/transforms-support-calc.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transforms/translate-getComputedStyle.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-canceling.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-currentTime.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-effect.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-finished.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-ready.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-startTime.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/CSSTransition-transitionProperty.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/Document-getAnimations.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/Element-getAnimations.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/KeyframeEffect-setKeyframes.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/KeyframeEffect-target.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/animations/text-shadow-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/animations/text-shadow-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/animations/vertical-align-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/animations/vertical-align-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/animations/z-index-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/event-dispatch.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/non-rendered-element-004.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/parsing/transition-timing-function-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/properties-value-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/properties-value-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/properties-value-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/properties-value-implicit-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/properties-value-inherit-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/properties-value-inherit-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/transition-property-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-transitions/transitioncancel-002.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/css-transitions/zero-duration-multiple-transition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/CSSMatrixComponent-DOMMatrix-mutable.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/stylevalue-normalization/normalize-image.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/stylevalue-subclasses/numeric-objects/numeric-factory.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/all.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/background.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/break.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/display.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/flex-basis.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-palette.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size-adjust.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/grid-gap.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/grid-template.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/grid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height-step.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-path.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-position.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/page.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/quotes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/scrollbar-gutter.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/scrollbar-width.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-thickness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-emphasis-color.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-indent.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-justify.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-underline-offset.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/transition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-typed-om/the-stylepropertymap/properties/z-index.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/animation/caret-color-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/animation/caret-color-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/animation/outline-color-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/animation/outline-offset-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/animation/outline-width-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/animation/outline-width-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-ui/appearance-cssom-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/appearance-initial-value-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/appearance-parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/appearance-property.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/appearance-serialization.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/inheritance.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/outline-017.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/parsing/outline-color-valid-optional.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/parsing/outline-offset-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/parsing/outline-valid-optional.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/parsing/outline-width-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/parsing/resize-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/parsing/user-select-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/parsing/user-select-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/text-overflow-023.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/webkit-appearance-parsing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/webkit-appearance-property.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-ui/webkit-appearance-serialization.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/calc-background-position-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/calc-integer.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-values/calc-nesting-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/calc-numbers.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/calc-serialization-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/calc-serialization.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/calc-z-index-fractions-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-values/ch-empty-pseudo-recalc-on-font-load.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-values/ch-pseudo-recalc-on-font-load.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/lh-rlh-on-root-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-values/minmax-angle-serialize.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/minmax-integer-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-values/minmax-length-serialize.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/minmax-number-serialize.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/minmax-percentage-serialize.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/minmax-time-serialize.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/round-function.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-values/viewport-units-after-font-load.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-definition-keywords.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-definition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-first-line.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-invalidation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-presentation-attribute.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-substitution-basic.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-transitions-from-no-value.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-transitions-to-no-value.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-transitions-transition-property-variable-before-value.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/css-variables/variable-transitions-value-before-transition-property-variable.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/css-will-change/parsing/will-change-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-will-change/parsing/will-change-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001c.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001d.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001g.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001h.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001k.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001l.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001o.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001p.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001s.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001t.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001w.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/orthogonal-parent-shrink-to-fit-001x.html [ Failure ]
-crbug.com/1050754 external/wpt/css/css-writing-modes/wm-propagation-body-scroll-offset-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/MediaQueryList-addListener-handleEvent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/MediaQueryList-addListener-removeListener.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/MediaQueryList-extends-EventTarget.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/MediaQueryListEvent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/client-props-root.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/cssom-getBoundingClientRect-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/cssom-getBoxQuads-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/cssom-view-img-attributes-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/dom-element-scroll.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/elementFromPoint.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/elementFromPosition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/elementScroll-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/elementScroll.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/elementsFromPoint-table.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/elementsFromPoint.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/getBoundingClientRect-empty-inline.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/mouseEvent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/offsetTopLeft-trailing-space-inline.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-default-css.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-element.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-main-frame-root.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-main-frame-window.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-scrollintoview-nested.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-smooth-positions.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-smooth.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-subframe-root.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scroll-behavior-subframe-window.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-shadow.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-sideways-lr-writing-mode-and-rtl-direction.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-sideways-lr-writing-mode.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-sideways-rl-writing-mode-and-rtl-direction.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-sideways-rl-writing-mode.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-smooth.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollIntoView-svg-shape.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollLeft-of-scroller-with-wider-scrollbar.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollWidthHeight.xht [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollWidthHeightWhenNotScrollable.xht [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrolling-quirks-vs-nonquirks.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/scrollintoview.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom-view/table-client-props.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/table-offset-props.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom-view/table-scroll-props.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/CSSGroupingRule-insertRule.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/CSSKeyframesRule.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/CSSStyleSheet-constructable-disallow-import.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/CSSStyleSheet-constructable-duplicate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/CSSStyleSheet-constructable.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/computed-style-002.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/computed-style-003.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/computed-style-004.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/cssstyledeclaration-csstext.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/cssstyledeclaration-properties.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/cssstyledeclaration-setter-form-controls.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/cssstyledeclaration-setter-logical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/font-family-serialization-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/cssom/getComputedStyle-detached-subtree.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/getComputedStyle-insets-absolute.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/getComputedStyle-insets-fixed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/getComputedStyle-pseudo.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/idlharness.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/serialize-values.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/serialize-variable-reference.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/shorthand-values.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/cssom/ttwf-cssom-doc-ext-load-count.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/filter-effects/animation/backdrop-filter-interpolation-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/filter-effects/animation/filter-interpolation-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/filter-effects/animation/filter-interpolation-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/filter-effects/animation/filter-interpolation-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/filter-effects/idlharness.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/geometry/DOMMatrix2DInit-validate-fixup.html [ Failure ]
-crbug.com/1050754 external/wpt/css/mediaqueries/forced-colors.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/mediaqueries/navigation-controls.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/mediaqueries/prefers-contrast.html [ Failure ]
-crbug.com/1050754 external/wpt/css/mediaqueries/prefers-reduced-data.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-anchor-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-anchor-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-distance-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-distance-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-path-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-path-interpolation-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-position-composition.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-position-interpolation.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-rotate-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/motion/animation/offset-rotate-interpolation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/motion/inheritance.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/offset-supports-calc.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/parsing/offset-anchor-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/parsing/offset-anchor-parsing-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/parsing/offset-parsing-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/motion/parsing/offset-path-computed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/motion/parsing/offset-path-parsing-valid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/motion/parsing/offset-position-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/parsing/offset-position-parsing-valid.html [ Failure ]
-crbug.com/1050754 external/wpt/css/motion/parsing/offset-shorthand.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/attribute-selectors/attribute-case/cssom.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/attribute-selectors/attribute-case/semantics.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/attribute-selectors/attribute-case/syntax.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/focus-display-none-001.html [ Failure ]
-crbug.com/1050754 external/wpt/css/selectors/focus-visible-005.html [ Failure ]
-crbug.com/1050754 external/wpt/css/selectors/focus-visible-007.html [ Failure ]
-crbug.com/1050754 external/wpt/css/selectors/focus-visible-009.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/selectors/focus-visible-010.html [ Timeout ]
-crbug.com/1050754 external/wpt/css/selectors/focus-visible-011.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/invalidation/is.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/invalidation/where.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/is-nested.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/is-specificity.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/css/selectors/user-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/HTMLElement-constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/custom-element-registry/per-global.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/form-associated/ElementInternals-accessibility.html [ Failure ]
-crbug.com/1050754 external/wpt/custom-elements/historical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/htmlconstructor/newtarget.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/perform-microtask-checkpoint-before-construction.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/range-and-constructors.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/custom-elements/reactions/HTMLInputElement.html [ Failure ]
-crbug.com/1050754 external/wpt/custom-elements/state/tentative/ElementInternals-states.html [ Failure ]
-crbug.com/1050754 external/wpt/custom-elements/state/tentative/state-pseudo-class.html [ Failure ]
-crbug.com/1050754 external/wpt/delegated-ink/exception-thrown-bad-color.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/delegated-ink/exception-thrown-diameter-less-than-or-equal-to-0.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/delegated-ink/exception-thrown-untrusted-event.tentative.window.html [ Failure ]
-crbug.com/1050754 external/wpt/delegated-ink/requestPresenter-returns-valid-promise.tentative.window.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/experimental-features/document-write.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/experimental-features/layout-animations-disabled-tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/experimental-features/layout-animations-disabled-violation-report-js-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/experimental-features/layout-animations-disabled-violation-report-keyframes-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/experimental-features/sync-script.tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/experimental-features/unsized-media.tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/font-display/report-only-auto.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/font-display/report-only-blank.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/font-display/report-only-block.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/font-display/report-only-swap.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/font-display/reporting-auto.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/font-display/reporting-blank.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/font-display/reporting-block.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/font-display/reporting-swap.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/reporting/document-write-report-only-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/reporting/document-write-reporting-tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/reporting/lossy-images-max-bpp-reporting-onload-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/reporting/lossy-images-max-bpp-reporting-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/reporting/oversized-images-reporting-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/reporting/unsized-media-reporting-tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/required-policy/document-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/required-policy/no-document-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/required-policy/required-document-policy-nested.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/required-policy/required-document-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/document-policy/required-policy/separate-document-policies.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/collections/HTMLCollection-as-prototype.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/collections/HTMLCollection-delete.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/collections/HTMLCollection-own-props.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/collections/HTMLCollection-supported-property-indices.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/collections/HTMLCollection-supported-property-names.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/events/Event-dispatch-click.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/events/Event-dispatch-handlers-changed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/events/Event-dispatch-listener-order.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/events/Event-dispatch-on-disabled-elements.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/dom/events/Event-dispatch-order-at-target.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/events/EventListener-handleEvent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/events/EventTarget-dispatchEvent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/events/document-level-touchmove-event-listener-passive-by-default.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/event-global-extra.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/events/relatedTarget.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/input-text-scroll-event-when-using-arrow-keys.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/overscroll-deltas.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/overscroll-event-fired-to-document.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/overscroll-event-fired-to-element-with-overscroll-behavior.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/overscroll-event-fired-to-scrolled-element.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/overscroll-event-fired-to-window.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-after-snap.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-for-programmatic-scroll.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-for-scrollIntoView.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-to-document.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-to-element-with-overscroll-behavior.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-to-scrolled-element.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-fired-to-window.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/events/shadow-relatedTarget.html [ Timeout ]
-crbug.com/1050754 external/wpt/dom/historical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/idlharness.window.html?exclude=Node [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/lists/DOMTokenList-coverage-for-attributes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/DOMImplementation-createDocument.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/Document-createElementNS.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/Document-createEvent.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/Element-closest.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/Element-matches.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/Element-webkitMatchesSelector.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/ParentNode-querySelector-All-xht.xht [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/ParentNode-querySelector-All.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/nodes/adoption.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/aria-attribute-reflection.html [ Failure ]
-crbug.com/1050754 external/wpt/html/dom/aria-element-reflection.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/nodes/remove-and-adopt-thcrash.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/nodes/remove-unscopable.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/dom/ranges/StaticRange-constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/domparsing/DOMParser-parseFromString-xml.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/domparsing/XMLSerializer-serializeToString.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/domparsing/innerhtml-01.xhtml [ Failure Pass ]
-crbug.com/1050754 external/wpt/domparsing/innerhtml-05.xhtml [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/event.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/other/delete.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/other/exec-command-with-text-editor.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/other/exec-command-without-editable-element.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/other/extra-text-nodes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/other/restoration.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/backcolor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/bold.html?1-1000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/bold.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/bold.html?2001-3000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/bold.html?3001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/createlink.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/delete.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/delete.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/delete.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/delete.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/delete.html?4001-5000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/delete.html?5001-6000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/delete.html?6001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/fontname.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/fontname.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/fontname.html?2001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/fontsize.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/fontsize.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/fontsize.html?2001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forecolor.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forecolor.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forecolor.html?2001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/formatblock.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/formatblock.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/formatblock.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/formatblock.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/formatblock.html?4001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forwarddelete.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forwarddelete.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forwarddelete.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forwarddelete.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forwarddelete.html?4001-5000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forwarddelete.html?5001-6000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/forwarddelete.html?6001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/hilitecolor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/indent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insert-list-items-in-table-cell.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/inserthorizontalrule.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/inserthtml.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertimage.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertlinebreak.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertorderedlist.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertparagraph.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertparagraph.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertparagraph.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertparagraph.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertparagraph.html?4001-5000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertparagraph.html?5001-6000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertparagraph.html?6001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/inserttext.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/inserttext.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/inserttext.html?2001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/insertunorderedlist.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/italic.html?1-1000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/italic.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/italic.html?2001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?2001-3000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?4001-5000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?5001-6000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifycenter.html?6001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifyfull.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifyfull.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyfull.html?2001-3000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyfull.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifyfull.html?4001-last [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyleft.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifyleft.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifyleft.html?2001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifyright.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifyright.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyright.html?2001-3000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/justifyright.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/justifyright.html?4001-last [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/misc.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?2001-3000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?3001-4000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?4001-5000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?5001-6000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?6001-7000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?7001-8000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?8001-9000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/multitest.html?9001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/outdent.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/outdent.html?1001-2000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/outdent.html?2001-last [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/removeformat.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/strikethrough.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/strikethrough.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/strikethrough.html?2001-last [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/subscript.html [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/superscript.html [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/underline.html?1-1000 [ Failure Pass ]
-crbug.com/1050754 external/wpt/editing/run/underline.html?1001-2000 [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/underline.html?2001-last [ Failure ]
-crbug.com/1050754 external/wpt/editing/run/unlink.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/element-timing/background-image-data-uri.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/background-image-multiple-elements.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/background-image-stretched.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/buffered-flag.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/cross-origin-element.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/css-generated-text.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/image-carousel.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/image-clipped-svg.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/image-data-uri.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/image-not-fully-visible.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/image-rect-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/image-src-change.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/image-with-css-scale.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/observe-background-image.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/observe-elementtiming.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/observe-multiple-images.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/observe-svg-image.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/observe-text.html [ Failure ]
-crbug.com/1050754 external/wpt/element-timing/progressively-loaded-image.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/element-timing/rectangular-image.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding-detection/ar-ISO-8859-6-late.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/ar-ISO-8859-6.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/el-windows-1253-late.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/el-windows-1253.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/fi-windows-1252-late.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/ja-EUC-JP-late.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/ja-EUC-JP.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/ru-IBM866-late.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding-detection/uk-KOI8-U-late.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/uk-KOI8-U.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/utf-8.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding-detection/vi-windows-1258-late.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding-detection/vi-windows-1258.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/encodeInto.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/encodeInto.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/encodeInto.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/iso-2022-jp-decoder.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/iso-2022-jp-decoder.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/sniffing.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/backpressure.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-attributes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-bad-chunks.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-ignore-bom.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-incomplete-input.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-non-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-split-character.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-utf8.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-utf8.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/decode-utf8.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/streams/encode-bad-chunks.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/encode-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/streams/readable-writable-properties.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/textdecoder-copy.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/textdecoder-copy.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/textdecoder-copy.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/textdecoder-streaming.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encoding/textdecoder-streaming.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/encoding/textdecoder-streaming.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-check-status-for-hdcp.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-persistent-license-events.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-persistent-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-persistent-usage-record.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted-segmented.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-events.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-multikey.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-multisession.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-two-videos.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-playback-temporary.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/clearkey-mp4-waiting-for-a-key.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-check-status-for-hdcp.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-events-session-closed-event.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-events.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-expiration.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-generate-request-disallowed-input.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-invalid-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-keystatuses-multiple-sessions.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-keystatuses.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-onencrypted.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-destroy-persistent-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-persistent-license-events.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-persistent-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-persistent-usage-record-events.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-persistent-usage-record.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-retrieve-persistent-license.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-encrypted-clear-sources.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-events.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-expired.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-multikey-sequential-readyState.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-multikey.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-multisession.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-playduration-keystatus.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-playduration.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-two-videos.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary-waitingforkey.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-playback-temporary.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-requestmediakeysystemaccess.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-reset-src-after-setmediakeys.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-setmediakeys-at-same-time.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-setmediakeys.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-syntax-mediakeys.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-syntax-mediakeysession.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-syntax-mediakeysystemaccess.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-unique-origin.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-mp4-waiting-for-a-key.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-not-callable-after-createsession.https.html [ Failure ]
-crbug.com/1050754 external/wpt/encrypted-media/drm-temporary-license-type.https.html [ Failure ]
-crbug.com/1050754 external/wpt/event-timing/buffered-and-duration-threshold.html [ Failure ]
-crbug.com/1050754 external/wpt/event-timing/buffered-flag.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/event-timing/click-timing.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/event-timing/crossiframe.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/event-timing/mousedown.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/event-timing/only-observe-firstInput.html [ Failure ]
-crbug.com/1050754 external/wpt/event-timing/pointerdown.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/event-timing/programmatic-click-not-observed.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/event-timing/retrievability.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/event-timing/retrieve-firstInput.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/event-timing/supported-types.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/event-timing/timingconditions.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/event-timing/toJSON.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/eventsource-constructor-non-same-origin.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/eventsource-constructor-url-bogus.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/eventsource/eventsource-constructor-url-bogus.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/eventsource/eventsource-constructor-url-bogus.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/eventsource-constructor-url-bogus.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-close.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-constructor-non-same-origin.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-eventtarget.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-onmessage.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-onopen.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-prototype.htm [ Failure ]
-crbug.com/1050754 external/wpt/eventsource/shared-worker/eventsource-url.htm [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/experimental-features/focus-without-user-activation-disabled-tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/feature-policy/experimental-features/focus-without-user-activation-enabled-tentative.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/experimental-features/trust-token-redemption-default-feature-policy.tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/experimental-features/trust-token-redemption-supported-by-feature-policy.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/experimental-features/vertical-scroll-scrollintoview.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/feature-policy-for-sandbox/feature-propagation-to-auxiliary-context.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/feature-policy/feature-policy-for-sandbox/sandbox-policies-in-allow-attribute.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/feature-policy/feature-policy-frame-policy-allowed-for-some.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/payment-allowed-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/payment-default-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/payment-disabled-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/payment-supported-by-feature-policy.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/permissions-policy-feature-policy-coexist.https.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-default-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-disabled-by-feature-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/picture-in-picture-supported-by-feature-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/camera-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/camera-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/encrypted-media-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/encrypted-media-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/fullscreen-report-only.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/fullscreen-reporting.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/generic-sensor-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/generic-sensor-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/geolocation-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/geolocation-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/microphone-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/microphone-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/midi-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/midi-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/payment-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/payment-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/picture-in-picture-report-only.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/picture-in-picture-reporting.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/screen-wake-lock-report-only.https.html [ Crash ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/screen-wake-lock-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/serial-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/serial-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/sync-xhr-report-only.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/sync-xhr-reporting.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/reporting/sync-xhr-report-only.html [ Timeout ]
-crbug.com/1050754 external/wpt/document-policy/reporting/sync-xhr-reporting.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/usb-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/usb-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/xr-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/feature-policy/reporting/xr-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/abort/cache.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/abort/general.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/abort/general.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/abort/general.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/abort/general.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/basic/accept-header.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/conditional-get.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/error-after-response.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/header-value-combining.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/basic/header-value-combining.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/header-value-null-byte.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/integrity.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/keepalive.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-forbidden-headers.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-head.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers-case.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers-nonascii.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-headers.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/request-referrer.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-about.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-data.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/scheme-others.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/stream-response.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/stream-safe-creation.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/basic/text-utf8.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/cors-multiple-origins.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/cors-preflight-redirect.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/cors/cors-preflight-redirect.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/cors-preflight-redirect.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/cors/cors-preflight-referrer.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/cors-preflight-referrer.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/cors/data-url-shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/credentials/authentication-basic.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/credentials/cookies.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/header-values-normalize.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/header-values.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-basic.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-casing.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-combine.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-errors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-no-cors.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-normalize.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-record.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/headers/headers-structure.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/idlharness.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/idlharness.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/idlharness.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/policies/csp-blocked-worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-back-to-original-origin.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-count.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-empty-location.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-empty-location.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-empty-location.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-location-escape.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-location.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-location.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-location.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-method.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-mode.any.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-mode.any.worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-origin.any.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-origin.any.worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-schemes.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/redirect/redirect-to-dataurl.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/destination/fetch-destination-worker.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-bad-port.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-default-conditional.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-default.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-force-cache.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-no-cache.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-no-store.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-only-if-cached.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-cache-reload.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-consume-empty.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-consume.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-disturbed.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-init-002.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-keepalive.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/request/request-reset-attributes.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-cancel-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-clone.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-consume-empty.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-consume-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-error-from-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-error.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-from-stream.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-init-001.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-init-002.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-static-error.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-static-redirect.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-1.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-2.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-3.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-4.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-5.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-6.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-by-pipe.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-by-pipe.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-disturbed-by-pipe.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/api/response/response-stream-with-broken-then.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/connection-pool/network-partition-key.html [ Timeout ]
-crbug.com/1050754 external/wpt/fetch/content-encoding/bad-gzip-body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/content-type/response.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/fetch/content-type/script.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cors-rfc1918/idlharness.tentative.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cross-origin-resource-policy/fetch.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cross-origin-resource-policy/fetch.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/cross-origin-resource-policy/scheme-restriction.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/data-urls/base64.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/data-urls/processing.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/data-urls/processing.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/data-urls/processing.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/http-cache/304-update.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/cache-mode.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/cc-request.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/freshness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/heuristic.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/invalidate.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/partial.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/post-patch.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/status.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/http-cache/vary.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/download.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/metadata/fetch-preflight.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/fetch.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/form.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/fetch/metadata/history.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/fetch/metadata/iframe.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/portal.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/sharedworker.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/trailing-dot.https.sub.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/metadata/window-open.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/fetch/nosniff/parsing-nosniff.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/origin/assorted.window.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/fetch/range/general.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/range/sw.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fetch/security/embedded-credentials.tentative.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/fetch/security/redirect-to-url-with-credentials.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch-sw.https.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/fetch.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/revalidate-not-blocked-by-csp.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/stale-css.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/stale-image.html [ Failure ]
-crbug.com/1050754 external/wpt/fetch/stale-while-revalidate/stale-script.html [ Failure ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-03.html [ Failure ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-04.html [ Failure ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-09.html [ Failure ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-10.html [ Failure ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-11.html [ Failure ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-20.html [ Failure ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-21.html [ Failure ]
-crbug.com/1050754 external/wpt/forced-colors-mode/forced-colors-mode-27.html [ Failure ]
-crbug.com/1050754 external/wpt/fullscreen/api/document-exit-fullscreen-nested-shadow-dom.html [ Failure ]
-crbug.com/1050754 external/wpt/fullscreen/api/document-fullscreen-enabled-cross-origin.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/fullscreen/api/document-fullscreen-enabled.html [ Failure ]
-crbug.com/1050754 external/wpt/fullscreen/api/element-request-fullscreen-options.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/fullscreen/api/element-request-fullscreen.html [ Failure ]
-crbug.com/1050754 external/wpt/fullscreen/api/historical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/fullscreen/rendering/fullscreen-css-invalidation.html [ Failure ]
-crbug.com/1050754 external/wpt/fullscreen/rendering/fullscreen-css-transition.html [ Failure ]
-crbug.com/1050754 external/wpt/gamepad/gamepad-supported-by-feature-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/gamepad/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/generic-sensor/generic-sensor-permission.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/geolocation-API/PositionOptions.https.html [ Failure ]
-crbug.com/1050754 external/wpt/geolocation-API/getCurrentPosition_IDL.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/geolocation-sensor/GeolocationSensor-disabled-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute-redirect-on-load.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy-attribute.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/geolocation-sensor/GeolocationSensor-enabled-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/geolocation-sensor/GeolocationSensor-enabled-on-self-origin-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/geolocation-sensor/GeolocationSensor-iframe-access.https.html [ Failure ]
-crbug.com/1050754 external/wpt/geolocation-sensor/GeolocationSensor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/geolocation-sensor/GeolocationSensor_read.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/geolocation-sensor/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/gyroscope/Gyroscope-iframe-access.https.html [ Failure ]
-crbug.com/1050754 external/wpt/gyroscope/Gyroscope.https.html [ Failure ]
-crbug.com/1050754 external/wpt/hr-time/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/hr-time/test_cross_frame_start.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/hr-time/timeOrigin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html-media-capture/capture_reflect.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/api-availability.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-samedoc.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-navigation-cross-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-navigation-samedoc.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/same-url.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/history-traversal/window-name-after-cross-origin-main-frame-navigation.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/navigating-across-documents/009.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/navigating-across-documents/012.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/navigating-across-documents/top-level-data-url.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-position-vertical-lr.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-position-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-position.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/004.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt-and-unload-script-closeable.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt/001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt/004.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/joint-session-history/joint-session-history-remove-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/007.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-history-interface/history_go_undefined.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/allow_prototype_cycle_through_location.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/assign_after_load.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/assign_before_load.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin-domain.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-goes-cross-origin-domain.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-stringifier.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/location-valueof.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/no-browsing-context.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/per-global.window.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/reload_document_write_onload.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/history/the-location-interface/scripted_click_location_assign_during_load.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/offline/browser-state/navigator_online_online.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_cached.https.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_checking.https.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_noupdate.https.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/offline/introduction-4/event_progress.https.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/offline/manifest_url_check.https.https.html [ Pass ]
-crbug.com/1050754 external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/sandboxing/sandbox-disallow-scripts-via-unsandboxed-popup.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-02.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-03.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_script_defer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-innerheight-innerwidth.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-screenx-screeny.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-width-height.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/close-method.window.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/closed-attribute.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/focus.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_3.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/navigated-named-objects.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/prototype.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/noopener-noreferrer-BarProp.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/noopener-noreferrer-sizing.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/self-et-al.window.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/window-indexed-properties-strict.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/window-indexed-properties.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/window-open-noopener.html?indexed [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/the-window-object/window-prototype-chain.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin-domain.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-goes-cross-origin-domain.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/windows/auxiliary-browsing-contexts/opener-setter.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/auxiliary-browsing-contexts/opener.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/browsers/windows/browsing-context.html [ Failure ]
-crbug.com/1050754 external/wpt/html/browsers/windows/document-access/cross_origin_intermediate_access.sub.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/document-access/cross_origin_intermediate_access_remote.sub.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/document-access/document_access_parent_access.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/embedded-opener-remove-frame.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/embedded-opener.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/browsers/windows/noreferrer-window-name.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.spacing.measure.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.gradient.conic.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.broken.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zeroheight.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.image.zerowidth.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zeroheight.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/fill-and-stroke-styles/2d.pattern.svgimage.zerowidth.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/hit-regions/addHitRegions-NotSupportedError-01.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/hit-regions/hitregions-members-exist.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-video-resize.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-origin.sub.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/shadows/canvas_shadows_001.htm [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/manual/wide-gamut-canvas/transferFromImageBitmap.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/path-objects/2d.path.stroke.prune.arc.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/path-objects/2d.path.stroke.prune.closed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/path-objects/2d.path.stroke.prune.curve.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/path-objects/2d.path.stroke.prune.line.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/path-objects/2d.path.stroke.prune.rect.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/scroll/2d.scrollPathIntoView.basic.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/scroll/2d.scrollPathIntoView.path.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/scroll/2d.scrollPathIntoView.verticalLR.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/scroll/2d.scrollPathIntoView.verticalRL.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/text-styles/2d.text.measure.width.space.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/element/video/2d.video.invalid.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.conic.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/line-styles/2d.line.cap.open.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/line-styles/2d.line.cap.open.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/line-styles/2d.line.join.open.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/line-styles/2d.line.join.open.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.w.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.resize.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.arc.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.closed.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.curve.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.line.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.rect.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/pixel-manipulation/2d.imageData.create2.nonfinite.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/pixel-manipulation/2d.imageData.create2.nonfinite.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/pixel-manipulation/2d.imageData.get.nonfinite.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/pixel-manipulation/2d.imageData.get.nonfinite.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/pixel-manipulation/2d.imageData.put.nonfinite.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/pixel-manipulation/2d.imageData.put.nonfinite.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.center.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.left.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.right.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.fontface.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.with.uppercase.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontKerning.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.fontVariant.settings.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.measure.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.measure.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.drawing.style.spacing.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.advances.worker.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.baselines.worker.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/text/2d.text.measure.width.space.worker.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.idl.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.em.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.junk.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.minus.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.percent.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.trailingjunk.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml.xhtml [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/documents/dom-tree-accessors/nameditem-names.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/elements/global-attributes/custom-attrs.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/elements/global-attributes/dataset-binding.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/elements/the-innertext-idl-attribute/getter.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/idlharness.https.html?exclude=(Document|Window|HTML.\*) [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/idlharness.https.html?include=(Document|Window) [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/idlharness.https.html?include=HTML.\* [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/idlharness.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/reflection-embedded.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/reflection-forms.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/reflection-metadata.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/reflection-misc.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/reflection-text.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/dom/usvstring-reflection.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/editing/dnd/synthetic/001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/editing/dnd/target-origin/202.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/editing/dnd/the-dropzone-attribute/dropzone_attribute.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/blob-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success-and-failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/identity-not-preserved.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-sharedworker-success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/nested-worker-success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-transferring.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-history.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-idb.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-notifications-api.any.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/serialization-via-notifications-api.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-failure.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-messagechannel-success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-serviceworker-failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-sharedworker-failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-simple-success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/safe-passing-of-structured-data/transfer-errors.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/attributes.sub.html?encoding=windows-1252 [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/attributes.sub.html?encoding=x-cp1251 [ Failure Pass ]
-
-# navigation.sub.html fails or times out when run with run_web_tests.py but passes with run_wpt_tests.py
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=utf8 [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=windows-1252 [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/navigation.sub.html?encoding=x-cp1251 [ Failure Timeout ]
-
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=history [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=loading [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html?include=workers [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=history [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=loading [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html?include=workers [ Failure ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=css [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=history [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=loading [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html?include=workers [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=base-href [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=css [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=history [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=hyperlink-search [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=loading [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=scheme [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=workers [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=xhr [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html?include=xml [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=base-href [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=css [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=history [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=hyperlink-search [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=loading [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=scheme [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=workers [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=xhr [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html?include=xml [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/interaction/focus/composed.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/interaction/focus/focus-02.html [ Failure ]
-crbug.com/1050754 external/wpt/html/interaction/focus/focus-management/focus-event-targets-simple.html [ Failure ]
-crbug.com/1050754 external/wpt/html/interaction/focus/focus-management/focus-events.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/interaction/focus/processing-model/legend-focusable.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/interaction/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order.html [ Failure ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/same-origin-autofocus.html [ Failure ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/spin-by-blocking-style-sheet.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/interaction/focus/the-autofocus-attribute/update-the-rendering.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/flow-content-0/dialog.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/form-controls/button-style.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/form-controls/resets.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/tables/hidden-attr.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/tables/table-attribute.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-content-before-legend.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-display.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-flexbox.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-generated-content.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-grid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-multicol.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-percentage-block-size.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-align-justify-self.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-align-text-align.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-align.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-display.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-grid-flex-multicol.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-sans-fieldset-display.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-hr-element-0/hr.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-page/iframe-body-margin-attributes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/non-replaced-elements/the-page/iframe-marginwidth-marginheight.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/pixel-length-attributes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/align.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/embedded-and-images-presentational-hints-ascii-case-insensitive.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/replaced-elements/svg-inline-sizing/svg-inline.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/unmapped-attributes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/widgets/appearance/default-styles.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/rendering/widgets/button-layout/abspos.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/widgets/button-layout/computed-style.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/widgets/button-layout/display-other.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/rendering/widgets/button-layout/grid.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/interactions-of-styling-and-scripting/conditionally-block-rendering-on-link-media-attr.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/styling/LinkStyle.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-base-element/base_href_invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-error-fired-before-scripting-unblocked.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-load-error-events.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-load-error-events.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-load-event.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-load-fired-before-scripting-unblocked.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-multiple-error-events.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-multiple-load-events.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-style-error-01.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-style-error-limited-quirks.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-link-element/link-style-error-quirks.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/document-metadata/the-style-element/style_type_svg.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/audio_loop_base.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy-attribute.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/autoplay-allowed-by-feature-policy.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/autoplay-default-feature-policy.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/autoplay-disabled-by-feature-policy.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/autoplay-with-broken-track.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_order_canplay_playing.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_order_loadstart_progress.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_pause.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_pause_noautoplay.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_play.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_play_noautoplay.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_playing.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_playing_noautoplay.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_timeupdate.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrack/activeCues.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCue/onenter.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCue/onexit.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/interfaces/TrackEvent/createEvent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/autoplay-overrides-preload.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-candidate-insert-before.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-candidate-moved.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-audio-constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-in-sync-event.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-into-iframe.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-networkState.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-not-in-document.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-load.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-pause.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-play.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-set-src-networkState.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-pointer-control.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-pointer-insert-br.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-pointer-insert-source.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-pointer-insert-text.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-pointer-remove-source-after.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-pointer-remove-source.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-pointer-remove-text.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-remove-source.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-remove-src.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-source-media.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/location-of-the-media-resource/currentSrc.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/networkState_during_progress.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/paused_false_during_play.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/paused_true_during_pause.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/loop-from-ended.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-move-to-other-document.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-move-within-document.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-different-load.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-networkState.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/play-in-detached-document.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/readyState_during_playing.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/src_object_blob.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/src-clear-cues.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-active-cues.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-mutable-fragment.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange-dynamically-created-track-element.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-missed.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-pause-on-exit.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-sorted-before-dispatch.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-disabled-addcue.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-disabled.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-element-src-change-error.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-element-src-change.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-mode-disabled.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-mode.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-remove-active-cue.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-remove-by-setting-innerHTML.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-remove-insert-ready-state.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-remove-track-inband.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-selection-task-order.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/video_008.htm [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/media-elements/video_loop_base.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-canvas-element/imagedata.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-embed-element/embed-in-object-fallback-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/cross-origin-to-whom-part-2.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/cross-origin-to-whom.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-allow.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation-1.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_top_navigation-3.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox_002.htm [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/decode/image-decode-iframe.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/decode/image-decode-svg.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/decode/image-decode.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-base-url-2.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-base-url.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-below-viewport-dynamic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-script-disabled-iframe.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-in-viewport-dynamic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-move-document.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-to-eager.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/img.complete.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/move-element-and-scroll.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-display-none.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-standards-mode.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/object-attributes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/object-events.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/object-in-object-fallback-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/object-setcustomvalidity.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-object-element/usemap-casing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/constraints/form-validation-validity-patternMismatch.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/constraints/form-validation-validity-valueMissing.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-0/form-double-submit-3.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-0/form-double-submit.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-0/getactionurl.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-target/rel-base-target.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-target/rel-button-target.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-target/rel-form-target.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/form-submission-target/rel-input-target.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/historical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/resetting-a-form/reset-form-event-realm.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/textfieldselection/selection-not-application-textarea.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-button-element/button-click-submits.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-fieldset-element/disabled-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-form-element/form-autocomplete.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-form-element/form-indexed-element.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-form-element/form-nameditem.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-input-element/datetime-local.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-input-element/hidden-charset-case-sensitive.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-input-element/time-focus-dynamic-value-change.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-input-element/type-change-state.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-label-element/forward-focus-to-associated-element.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-label-element/label-attributes.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/forms/the-output-element/mutations.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-dialog-element/centering.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-dialog-element/dialog-autofocus-multiple-times.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-dialog-element/dialog-autofocus.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-dialog-element/remove-dialog-should-unblock-document.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/links/downloading-resources/header-origin-no-referrer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/links/following-hyperlinks/activation-behavior.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/rellist-feature-detection.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/029.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/031.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/083.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-defer-import.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-defer-noimport.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-external-module-import.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-external-module-noimport.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-import-xhtml.xhtml [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-module-import.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-module-noimport.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/106-noimport-xhtml.xhtml [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/116.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/128.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/146.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/148.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/parse-error.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/microtasks/checkpoint-importScripts.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-credentials.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/no-active-script-classic-manual.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/no-active-script-module-manual.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-classic.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-external-module.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-classic.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-base-url-inline-module.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-other-document.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/module/module-in-xhtml.xhtml [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/script-charset-01.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-document-type.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/scripting-1/the-template-element/template-element/template-content-hierarcy.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/default.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/dir-html-input-dynamic-text.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/dir.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/dir01.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/enabled.html [ Failure ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/focus-autofocus.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/focus.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/link.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/selectors/pseudo-classes/readwrite-readonly.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html [ Failure ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/DOMContentLoaded-defer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/Document.getElementsByTagName-foreign-01.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_innerHTML_adoption01.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_innerHTML_webkit02.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_menuitem-element.html?run_type=uri [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_menuitem-element.html?run_type=write [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_menuitem-element.html?run_type=write_single [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_tests11.html?run_type=uri [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_tests11.html?run_type=write [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_tests11.html?run_type=write_single [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_tests25.html?run_type=uri [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_tests25.html?run_type=write [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_tests25.html?run_type=write_single [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_webkit02.html?run_type=uri [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_webkit02.html?run_type=write [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/html5lib_webkit02.html?run_type=write_single [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/syntax/parsing/the-end.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/user-activation/consumption-crossorigin.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/consumption-sameorigin.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/navigation-state-reset-crossorigin.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/navigation-state-reset-sameorigin.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/propagation-crossorigin.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/html/user-activation/propagation-sameorigin.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/document-write/contentType.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/document-write/module-tla-immediate-promise.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/document-write/write-active-document.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-side-effects-ignore-opens-during-unload.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/location-set-and-document-open.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/reload.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/tasks.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/microtask-queuing/queue-microtask-exceptions.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/microtask-queuing/queue-microtask-exceptions.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/microtask-queuing/queue-microtask.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/event-loops/fully_active_document.window.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/events/event-handler-all-global-events.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/events/event-handler-attributes-body-window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/events/event-handler-attributes-windowless-body.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/compile-error-in-setInterval.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html [ Timeout ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-incumbent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/runtime-error-in-setInterval.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/runtime-error-in-setTimeout.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html [ Failure ]
-crbug.com/1050754 external/wpt/html/webappapis/update-rendering/child-document-raf-order.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/idle-detection/basics.tentative.https.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-allowed-by-feature-policy.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-default-feature-policy.https.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/idle-detection/idle-detection-disabled-by-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/idle-detection/idle-permission.tentative.https.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idlharness-worker.https.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/idle-detection/idlharness.https.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/idle-detection/interceptor.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/import-maps/acquire-import-maps-flag/dynamic-import/success.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/import-maps/acquire-import-maps-flag/script-tag/success.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/import-maps/acquire-import-maps-flag/worker-request/success.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/import-maps/common/parsing.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/common/resolving-internal.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/common/resolving.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/core/bare.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/core/data.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/core/http.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/core/module-map-key.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/csp/applied-to-target-dynamic.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/csp/applied-to-target.sub.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/csp/hash.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/csp/nonce.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/import-maps/csp/unsafe-inline.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-inlines.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-label-focus.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-node-is-uneditable.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/inert/inert-node-is-unfocusable.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-node-is-unselectable.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-on-slots.html [ Failure ]
-crbug.com/1050754 external/wpt/inert/inert-retargeting.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/assumptions/allowed-to-play.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/failing-test.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/timeout.html [ Timeout ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception-following-subtest.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception-single-test.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/uncaught-exception.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/unhandled-rejection-following-subtest.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/unhandled-rejection-single-test.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/infrastructure/expected-fail/unhandled-rejection.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/context.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/http2-context.sub.h2.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/order-of-metas.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/secure-context.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/title.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/server/wpt-server-http.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/click_nested.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/click_nested_crossorigin.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/file_upload.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/set_permission.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/infrastructure/testdriver/virtual_authenticator.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/input-device-capabilities/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/input-events/input-events-exec-command.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/input-events/input-events-get-target-ranges-backspace.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/input-events/input-events-get-target-ranges-during-and-after-dispatch.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/input-events/input-events-get-target-ranges-forwarddelete.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/input-events/input-events-get-target-ranges-non-collapsed-selection.tentative.html?Backspace [ Failure ]
-crbug.com/1050754 external/wpt/input-events/input-events-get-target-ranges-non-collapsed-selection.tentative.html?Delete [ Failure ]
-crbug.com/1050754 external/wpt/input-events/input-events-get-target-ranges-non-collapsed-selection.tentative.html?TypingA [ Failure ]
-crbug.com/1050754 external/wpt/input-events/input-events-typing.html [ Failure ]
-crbug.com/1050754 external/wpt/input-events/select-event-drag-remove.html [ Failure ]
-crbug.com/1050754 external/wpt/installedapp/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/installedapp/installedapp.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/cross-origin-iframe.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/document-scrolling-element-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/empty-root-margin.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/intersection-observer/iframe-no-root-with-wrapping-scroller.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/iframe-no-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/initial-observation-with-threshold.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/inline-client-rect.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/intersection-ratio-ib-split.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/isIntersecting-change-events.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/isIntersecting-threshold.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/multiple-thresholds.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/remove-element.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/root-margin-root-element.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/root-margin.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-document-root.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/same-origin-grand-child-iframe.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/text-target.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/blur-filter.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/box-shadow.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/delay-test.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/drop-shadow-filter-vertical-rl.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/iframe-target.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/inline-occlusion.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-effects.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-occlusion-svg-foreign-object.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/simple-occlusion.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/text-editor-occlusion.html [ Failure ]
-crbug.com/1050754 external/wpt/intersection-observer/v2/text-shadow.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe-complex-clip.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe-masked-complex-clip.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed-2.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe-masked-pointer-events-none.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe-overlap.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe-pointer-events-none.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe-transformed.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/security/cross-origin-subframe.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/tentative/same-origin-subframe.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/is-input-pending/tentative/toplevel.html [ Failure ]
-crbug.com/1050754 external/wpt/js-self-profiling/idlharness.https.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/contracted-image.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/cross-origin-image.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/first-paint-equals-lcp-text.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/image-TAO.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/image-inside-svg.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/image-not-fully-visible.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/image-src-change.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/invisible-images-composited-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/larger-image.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/loadTime-after-appendChild.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/multiple-redirects-TAO.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/observe-after-untrusted-scroll.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/observe-image.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/redirects-tao-star.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/repeated-image.html [ Failure ]
-crbug.com/1050754 external/wpt/largest-contentful-paint/video-poster.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/absolute-child-shift-with-parent-contain.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/absolute-child-shift-with-parent-negative-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/absolute-child-shift-with-parent-overflow.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/absolute-child-shift-with-parent-will-change.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/body-display-change.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/buffer-layout-shift.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/buffered-flag.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/child-shift-with-parent-overflow-hidden.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/child-shift-with-parent-overflow-x-clip.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/child-shift-with-parent.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/clip-negative-bottom-margin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/layout-instability/composited-element-movement.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/input-timestamp.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/move-transformed.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/multi-clip-visual-rect.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/partially-clipped-visual-rect.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/pointerdown-becomes-scroll.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/pointerdown-becomes-tap.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/layout-instability/recent-input.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/rtl-distance.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/shift-into-viewport.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/shift-while-scrolled.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/simple-block-movement.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/sources-enclosure.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/sources-maximpact.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/sources.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/transform.html [ Failure ]
-crbug.com/1050754 external/wpt/layout-instability/video.html [ Failure ]
-crbug.com/1050754 external/wpt/lifecycle/child-display-none.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/lifecycle/child-out-of-viewport.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/lifecycle/freeze.html [ Failure ]
-crbug.com/1050754 external/wpt/lifecycle/worker-dispay-none.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/longtask-timing/longtask-attributes.html [ Failure ]
-crbug.com/1050754 external/wpt/longtask-timing/longtask-in-externalscript.html [ Failure ]
-crbug.com/1050754 external/wpt/magnetometer/Magnetometer-disabled-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/magnetometer/Magnetometer-enabled-on-self-origin-by-feature-policy.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/magnetometer/Magnetometer-iframe-access.https.html [ Failure ]
-crbug.com/1050754 external/wpt/magnetometer/Magnetometer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/magnetometer/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/direction/direction.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/fractions/frac-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/fractions/frac-linethickness-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/fractions/frac-parameters-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/fractions/frac-parameters-2.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/fractions/frac-parameters-3.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mpadded/legacy-orthogonal-pseudo-units.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mpadded/mpadded-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mpadded/mpadded-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mpadded/mpadded-003.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mrow/inferred-mrow-baseline.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mrow/legacy-mrow-like-elements-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mrow/legacy-mstyle-attributes.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mrow/mrow-preferred-width.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/mrow/spacing.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/embellished-operator-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/embellished-operator-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/largeop-hit-testing.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/mo-axis-height-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-004.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-005.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-006.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-movablelimits-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-movablelimits-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-movablelimits-003.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-movablelimits-004.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-movablelimits-006.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-spacing-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-spacing-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-spacing-003.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-spacing-004.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-spacing-005.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-spacing-006.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-stretchy-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-stretchy-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-stretchy-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-stretchy-004.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-stretchy-005.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-stretchy-006.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-symmetric-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-symmetric-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-symmetric-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-symmetric-004.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-symmetric-005.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/operators/operator-dictionary-symmetric-006.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/radicals/root-parameters-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/radicals/root-parameters-2.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/cramped-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/empty-underover.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/subsup-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/subsup-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/subsup-3.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/subsup-4.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/subsup-5.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/subsup-parameters-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/subsup-parameters-2.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/underover-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/underover-parameters-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/underover-parameters-2.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/scripts/underover-parameters-3.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/spaces/space-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/spaces/space-like-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/spaces/space-like-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/spaces/space-like-003.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/spaces/space-like-004.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/tables/dynamic-table-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/tables/table-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/tables/table-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/presentation-markup/tables/table-axis-height.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/attribute-mapping-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/display-2.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/display-contents.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/displaystyle-1.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/displaystyle-2.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/displaystyle-3.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/ignored-properties-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/lengths-2.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/multi-column-layout.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/not-participating-to-parent-layout.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/padding-border-margin/border-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/padding-border-margin/border-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/padding-border-margin/margin-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/padding-border-margin/margin-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/padding-border-margin/margin-003.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/padding-border-margin/padding-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/padding-border-margin/padding-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/scriptlevel-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/width-height-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/writing-mode/writing-mode-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/css-styling/writing-mode/writing-mode-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/content-editable.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/css-inline-style-interface.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/display-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/dynamic-childlist-001.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/dynamic-childlist-002.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/href-click-3.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/integration-point-4.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/integration-point-5.html [ Failure ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/math-global-event-handlers.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/tabindex-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mathml/relations/html5-tree/tabindex-002.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/detached.https.window.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/measure-memory/iframe.cross-origin.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/iframe.cross-site.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/iframe.same-origin.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/main-frame-and-worker.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/main-frame.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/redirect.client.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/redirect.server.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/window-open.cross-origin.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/window-open.cross-site.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/window-open.mix.https.window.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/measure-memory/window-open.same-origin.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/measure-memory/randomized-breakdown.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/media-capabilities/decodingInfo.any.html [ Failure ]
-crbug.com/1050754 external/wpt/media-capabilities/decodingInfo.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/media-capabilities/encodingInfo.html [ Failure ]
-crbug.com/1050754 external/wpt/media-capabilities/idlharness.any.html [ Failure ]
-crbug.com/1050754 external/wpt/media-capabilities/idlharness.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/SourceBuffer-abort-readyState.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/SourceBuffer-abort-removed.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/SourceBuffer-abort-updating.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/SourceBuffer-abort.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/URL-createObjectURL-revoke.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/dedicated-worker/mediasource-worker-objecturl.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/dedicated-worker/mediasource-worker-play.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/mediasource-activesourcebuffers.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-append-buffer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/mediasource-avtracks.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-buffered.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/mediasource-changetype-play-implicit.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-changetype-play-negative.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-changetype-play-without-codecs-parameter.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-changetype-play.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-mp4-a-bitrate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-mp4-av-audio-bitrate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-mp4-av-framesize.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-mp4-av-video-bitrate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-mp4-v-bitrate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-mp4-v-framerate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-mp4-v-framesize.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-webm-a-bitrate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-webm-av-audio-bitrate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-webm-av-framesize.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-webm-av-video-bitrate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-webm-v-bitrate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-webm-v-framerate.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-config-change-webm-v-framesize.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-correct-frames-after-reappend.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-correct-frames.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-duration.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-endofstream.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/mediasource-getvideoplaybackquality.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-play-then-seek-back.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-play.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-redundant-seek.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-remove.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/mediasource-replay.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-seek-beyond-duration.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-seek-during-pending-seek.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-sequencemode-append-buffer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/media-source/mediasource-sourcebuffer-trackdefaults.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-trackdefault.html [ Failure ]
-crbug.com/1050754 external/wpt/media-source/mediasource-trackdefaultlist.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-fromelement/HTMLCanvasElement-getImageData-noframe.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-fromelement/capture.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-fromelement/ended.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-fromelement/historical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-fromelement/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-clone.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getCapabilities.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getConstraints.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getSettings.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/getPhotoCapabilities.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/getPhotoSettings.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/setOptions-reject.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/takePhoto-with-PhotoSettings.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-image/takePhoto.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-record/MediaRecorder-bitrate.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-record/MediaRecorder-creation.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-record/MediaRecorder-error.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-record/MediaRecorder-events-and-exceptions.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-record/MediaRecorder-pause-resume.html [ Timeout ]
-crbug.com/1050754 external/wpt/mediacapture-record/MediaRecorder-peerconnection.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mediacapture-record/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mediacapture-streams/GUM-deny.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-streams/GUM-required-constraint-with-ideal-value.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaDevices-enumerateDevices-not-allowed-camera.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaDevices-enumerateDevices-not-allowed-mic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStream-MediaElement-firstframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStream-default-feature-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStream-removetrack.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mediacapture-streams/historical.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediacapture-streams/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/mediasession/idlharness.window.html [ Failure ]
-crbug.com/1050754 external/wpt/mediasession/mediametadata.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediasession/playbackstate.html [ Failure ]
-crbug.com/1050754 external/wpt/mediasession/positionstate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mediasession/setactionhandler.html [ Failure ]
-crbug.com/1050754 external/wpt/merchant-validation/complete-method.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/merchant-validation/constructor.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/merchant-validation/constructor.tentative.http.html [ Failure ]
-crbug.com/1050754 external/wpt/merchant-validation/onmerchantvalidation-attribute.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mimesniff/mime-types/charset-parameter.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mimesniff/mime-types/parsing.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mimesniff/mime-types/parsing.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/unset/fetch.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/unset/websocket.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic-data.meta/unset/xhr.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/unset/fetch.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/unset/websocket.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-classic.http-rp/unset/xhr.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/unset/fetch.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/unset/websocket.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module-data.meta/unset/xhr.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/opt-in/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/unset/fetch.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/unset/websocket.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/sharedworker-module.http-rp/unset/xhr.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/object-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-animation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.http-rp/opt-in/worklet-layout.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/worklet-animation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/opt-in/worklet-layout.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/audio-tag.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/img-tag.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-classic.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/sharedworker-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/video-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/worklet-animation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/gen/top.meta/unset/worklet-layout.https.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/imageset.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/tentative/autoupgrades/audio-upgrade.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/tentative/autoupgrades/image-upgrade.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/mixed-content/tentative/autoupgrades/video-upgrade.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/mst-content-hint/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/file-system-access/opaque-origin.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-Error.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-frames.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-windows.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-MessagePort-workers.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-frames.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-windows.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemBaseHandle-postMessage-workers.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemWritableFileStream.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/sandboxed_FileSystemWritableFileStream.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/file-system-access/showPicker-errors.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/close_async.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/close_async.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/close_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/close_async.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/close_sync.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_flush_async.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_flush_async.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_flush_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_flush_async.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_getLength_async.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_getLength_async.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_getLength_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_getLength_async.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_read_async.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_read_async.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_read_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_read_async.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_write_async.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_write_async.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_write_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/concurrent_io/concurrent_io_write_async.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/delete_async_basic.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/delete_async_basic.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/delete_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/delete_async_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/delete_sync_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/flush_async_basic.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/flush_async_basic.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/flush_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/flush_async_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/flush_sync_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/getLength_setLength_async_basic.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/getLength_setLength_async_basic.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/getLength_setLength_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/getLength_setLength_async_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/getLength_setLength_sync_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_getAll_async_basic.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_getAll_async_basic.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_getAll_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_getAll_async_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/open_getAll_sync_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_async_basic.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_async_basic.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_async_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/read_write_sync_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_basic.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_basic.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_failure_handling.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_failure_handling.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_failure_handling.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_async_failure_handling.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_sync_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/rename_sync_failure_handling.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_bounds_async.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_bounds_async.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_bounds_async.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_bounds_async.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/setLength_bounds_sync.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_getLength_async_basic.tentative.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_getLength_async_basic.tentative.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_getLength_async_basic.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_getLength_async_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/native-io/write_getLength_sync_basic.tentative.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/navigation-timing/test_performance_attributes.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/network-error-logging/sends-report-on-404.https.html [ Failure ]
-crbug.com/1050754 external/wpt/network-error-logging/sends-report-on-cache-validation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/network-error-logging/sends-report-on-redirect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/network-error-logging/sends-report-on-subdomain-dns-failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/network-error-logging/sends-report-on-success-with-subdomain-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/network-error-logging/sends-report-on-success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/notifications/constructor-basic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/notifications/constructor-invalid.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/notifications/event-onclose.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/notifications/event-onshow.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/notifications/idlharness.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/notifications/idlharness.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/notifications/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/notifications/idlharness.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/notifications/instance.html [ Failure ]
-crbug.com/1050754 external/wpt/notifications/lang.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/notifications/permission.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/device-orientation-events-of-detached-documents.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/device-orientation-events-unavailable-on-insecure-origins.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/orientation-event/motion/add-during-dispatch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/motion/add-listener-from-callback.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/motion/multiple-event-listeners.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/motion/null-values.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/orientation/absolute-fallback.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/orientation/add-listener-from-callback.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/orientation/basic-operation-absolute.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/orientation/basic-operation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/orientation/multiple-event-listeners.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/orientation/no-synchronous-events.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/orientation/null-values.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-event/orientation/updates.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-sensor/AbsoluteOrientationSensor-iframe-access.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-sensor/AbsoluteOrientationSensor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-sensor/RelativeOrientationSensor-iframe-access.https.html [ Failure ]
-crbug.com/1050754 external/wpt/orientation-sensor/RelativeOrientationSensor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-no-child-bad-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-no-child-yes-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-no-child-yes-same.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-no-child-yes-subdomain-with-redirect.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-no-child-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-no-child-yeswithparams-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-yes-child-no-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-yes-child-no-same.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-yes-child-no-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-yes-child-yes-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-yes-child-yes-same.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/1-iframe/parent-yes-child-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain2.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/about-blank.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/document-domain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/csp-sandbox-no.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/data-to-javascript-no.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/data-to-javascript-yes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/data-url-no.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/data-url-yes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/javascript-url-no.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/javascript-url-yes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/removed-iframe.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/sandboxed-iframe-no.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-no.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/going-back.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/insecure-http.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-no-openee-yes-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-no-openee-yes-same.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-no-openee-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/origin-isolation/removing-iframes.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-gradient.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-invisible-3d-rotate-descendant.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-invisible-3d-rotate.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-out-of-bounds-translate.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-svg.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-text-input.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-video-frame.html [ Failure ]
-crbug.com/1050754 external/wpt/paint-timing/fcp-only/fcp-video-poster.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-handler/idlharness.https.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-handler/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-handler/idlharness.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-handler/payment-instruments.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-handler/respond-with-minimal-ui.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-method-basic-card/apply_the_modifiers.html [ Timeout ]
-crbug.com/1050754 external/wpt/payment-method-basic-card/historical.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-method-basic-card/payment-request-canmakepayment-method.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-method-basic-card/steps_for_selecting_the_payment_handler.html [ Timeout ]
-crbug.com/1050754 external/wpt/payment-method-id/payment-request-ctor-pmi-handling.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/PaymentMethodChangeEvent/methodDetails-attribute.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/PaymentMethodChangeEvent/methodName-attribute.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/PaymentRequestUpdateEvent/constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/allowpayment/active-document-cross-origin.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/allowpayment/active-document-same-origin.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/allowpayment/allowpaymentrequest-attribute-cross-origin-bc-containers.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/allowpayment/no-attribute-cross-origin-bc-containers.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/allowpayment/no-attribute-same-origin-bc-containers.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/allowpayment/removing-allowpaymentrequest.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/allowpayment/setting-allowpaymentrequest.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/constructor_convert_method_data.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-request/historical.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-request/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-request/onpaymentmethodchange-attribute.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/payment-is-showing.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-abort-method.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-canmakepayment-method.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-constructor.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-ctor-currency-code-checks.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-ctor-pmi-handling.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-hasenrolledinstrument-method-protection.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-hasenrolledinstrument-method.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-id-attribute.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/payment-request-show-method.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/payment-request/payment-response/onpayerdetailchange-attribute.https.html [ Failure ]
-crbug.com/1050754 external/wpt/payment-request/rejects_if_not_active.https.html [ Failure ]
-crbug.com/1050754 external/wpt/performance-timeline/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/periodic-background-sync/periodicsync.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/experimental-features/focus-without-user-activation-enabled-tentative.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/experimental-features/trust-token-redemption-default-permissions-policy.tentative.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/experimental-features/trust-token-redemption-supported-by-permissions-policy.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/experimental-features/vertical-scroll-scrollintoview.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/payment-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/payment-allowed-by-permissions-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/payment-allowed-by-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/payment-default-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/payment-disabled-by-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/payment-supported-by-permissions-policy.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-frame-policy-allowed-for-all.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-frame-policy-disallowed-for-all.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-header-policy-allowed-for-all.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-header-policy-allowed-for-some.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-header-policy-declined.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-header-policy-disallowed-for-all.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-nested-header-policy-allowed-for-all.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-nested-header-policy-allowed-for-self.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/permissions-policy-nested-header-policy-disallowed-for-all.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy-attribute.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-allowed-by-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-default-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-disabled-by-permissions-policy.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/picture-in-picture-supported-by-permissions-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/camera-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/camera-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/encrypted-media-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/encrypted-media-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/fullscreen-report-only.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/fullscreen-reporting.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/generic-sensor-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/generic-sensor-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/geolocation-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/geolocation-reporting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/microphone-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/microphone-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/midi-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/midi-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/payment-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/payment-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/picture-in-picture-report-only.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/picture-in-picture-reporting.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/serial-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/serial-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/sync-xhr-report-only.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/sync-xhr-reporting.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/usb-report-only.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/usb-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/xr-report-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-policy/reporting/xr-reporting.https.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-request/idlharness.any.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-request/idlharness.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-revoke/idlharness.any.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions-revoke/idlharness.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions/idlharness.any.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions/idlharness.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions/nfc-permission.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions/permissions-query-feature-policy-attribute.https.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/permissions/test-background-fetch-permission.html [ Failure ]
-crbug.com/1050754 external/wpt/permissions/test-periodic-background-sync-permission.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/css-selector.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/disable-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/enter-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/exit-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/idlharness.window.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/leave-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/mediastream.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/picture-in-picture-element.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/picture-in-picture-window.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/request-picture-in-picture-twice.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/request-picture-in-picture.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/removed-from-document.html [ Failure ]
-crbug.com/1050754 external/wpt/picture-in-picture/shadow-dom.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_compat-mouse-events-when-removing-nodes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_mouse-on-object.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_mouse-pointer-on-scrollbar.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_attributes_nohover_pointers.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_boundary_events_in_capturing.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_change-touch-action-onpointerdown_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_coalesced_events_attributes.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_disabled_form_control.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_pointercancel_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_pointercapture-not-lost-in-chorded-buttons.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_pointercapture_in_frame.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_releasepointercapture_events_to_original_target.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_click.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_drag.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-button-none-test_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-inherit_child-none_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-none-css_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-none-on-body-when-style-propagates-to-viewport_touch.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-pan-down-css_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-pan-left-css_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-pan-right-css_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-pan-up-css_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-pan-x-css_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-pan-y-css_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-span-none-test_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-svg-none-test_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-action-table-none-test_touch.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerevent_touch-adjustment_click_target.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_coordinates_when_locked.html [ Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_getCoalescedEvents_when_pointerlocked.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_movementxy.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_after_pointercapture.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointerlock_supercedes_capture.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Timeout ]
-crbug.com/1050754 external/wpt/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html [ Timeout ]
-crbug.com/1050754 external/wpt/pointerlock/mouse_buttons_back_forward.html [ Timeout ]
-crbug.com/1050754 external/wpt/pointerlock/movementX_Y_basic.html [ Failure ]
-crbug.com/1050754 external/wpt/pointerlock/pointerlock_remove_target.html [ Timeout ]
-crbug.com/1050754 external/wpt/pointerlock/pointerlock_shadow.html [ Timeout ]
-crbug.com/1050754 external/wpt/portals/about-blank-cannot-host.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/csp/frame-ancestors.sub.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/portals/csp/frame-src.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/history/history-manipulation-inside-portal-with-subframes.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/history/history-manipulation-inside-portal.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/htmlportalelement-event-handler-content-attributes.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portal-activate-data.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portal-activate-default.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portal-activate-event-constructor.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portal-activate-event.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portal-non-http-navigation.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portal-onload-event.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-activate-empty-browsing-context.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-activate-inside-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-activate-inside-portal.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-activate-network-error.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-activate-no-browsing-context.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-activate-resolution.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-activate-twice.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-activate-while-unloading.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/portals/portals-adopt-predecessor.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-api.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-close-window.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-cross-origin-load.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-focus.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-host-exposure.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-host-hidden-after-activation.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-host-null.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-host-post-message.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-navigate-after-adoption.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-nested.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-post-message.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-referrer-inherit-header.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-referrer-inherit-meta.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-referrer.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-repeated-activate.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/portals-set-src-after-activate.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/predecessor-fires-unload.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/xfo/portals-xfo-deny.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/portals/xfo/portals-xfo-sameorigin.html [ Failure ]
-crbug.com/1050754 external/wpt/preload/delaying-onload-link-preload-after-discovery.html [ Timeout ]
-crbug.com/1050754 external/wpt/preload/download-resources.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/preload/link-header-preload-imagesrcset.html [ Failure ]
-crbug.com/1050754 external/wpt/preload/onerror-event.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/preload/onload-event.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/preload/preload-with-type.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/preload/reflected-as-value.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/preload/single-download-preload.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/preload/subresource-integrity.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/PresentationRequest_error.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/PresentationRequest_mixedcontent.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/PresentationRequest_mixedcontent_multiple.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/PresentationRequest_sandboxing_error.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/PresentationRequest_sandboxing_success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/PresentationRequest_success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/defaultRequest.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/getAvailability.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/getAvailability_sandboxing_success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/idlharness.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_success.https.html [ Failure ]
-crbug.com/1050754 external/wpt/presentation-api/controlling-ua/startNewPresentation_error.https.html [ Failure ]
-crbug.com/1050754 external/wpt/priority-hints/fetch-api-request.tentative.any.html [ Failure ]
-crbug.com/1050754 external/wpt/priority-hints/fetch-api-request.tentative.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/priority-hints/img-attr-named-constructor.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/priority-hints/link-attr.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/push-api/idlharness.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/push-api/idlharness.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/push-api/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/push-api/idlharness.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/quirks/line-height-calculation.html [ Failure ]
-crbug.com/1050754 external/wpt/quirks/percentage-height-calculation.html [ Failure ]
-crbug.com/1050754 external/wpt/quirks/table-cell-nowrap-minimum-width-calculation.html [ Failure ]
-crbug.com/1050754 external/wpt/quirks/table-cell-width-calculation.html [ Failure ]
-crbug.com/1050754 external/wpt/quirks/unitless-length/excluded-properties-003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/direct-sockets/open-consume-activation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/direct-sockets/open-without-user-gesture.https.html [ Failure ]
-crbug.com/1050754 external/wpt/direct-sockets/remotePort-required.https.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.http-rp/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K-1/gen/top.meta/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.http-rp/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/4K/gen/top.meta/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/css-integration/svg/external-stylesheet.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/css-integration/svg/inline-style.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/css-integration/svg/internal-stylesheet.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/css-integration/svg/presentation-attribute.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/css-integration/svg/processing-instruction.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer-when-downgrade/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/no-referrer/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/worker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin-when-cross-origin/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/origin/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin-when-cross-origin/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/strict-origin/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unsafe-url/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.http-rp/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer-when-downgrade/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/origin/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/same-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/worker-classic.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/strict-origin/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unsafe-url/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unsafe-url/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/iframe.meta/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/req.attr/no-referrer/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer-when-downgrade/worker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer-when-downgrade/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/no-referrer/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin-when-cross-origin/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin/worker-classic.http.html [ Crash ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/same-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin-when-cross-origin/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin/iframe-tag.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/strict-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unsafe-url/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unsafe-url/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.http-rp/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/fetch.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer-when-downgrade/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/no-referrer/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-cross-origin/worker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/same-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin-when-cross-origin/xhr.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/strict-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unsafe-url/iframe-tag.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc-inherit.meta/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/no-referrer/worker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/same-origin/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/same-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/strict-origin/worker-module.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/srcdoc.meta/unsafe-url/worker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer/iframe-tag.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin/iframe-tag.http.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.http-rp/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer-when-downgrade/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/no-referrer/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/same-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/same-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin-when-cross-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/strict-origin/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unsafe-url/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unsafe-url/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/a-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/iframe-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/img-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/script-tag.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/sharedworker-classic.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/sharedworker-module.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/top.meta/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/worker-classic.http-rp/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/worker-classic.http-rp/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/worker-module.http-rp/unset/fetch.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/gen/worker-module.http-rp/unset/xhr.http.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/referrer-policy/generic/multiple-headers-one-invalid.html [ Failure ]
-crbug.com/1050754 external/wpt/referrer-policy/generic/unsupported-csp-referrer-directive.html [ Failure ]
-crbug.com/1050754 external/wpt/remote-playback/cancel-watch-availability.html [ Failure ]
-crbug.com/1050754 external/wpt/remote-playback/disable-remote-playback-cancel-watch-availability-throws.html [ Failure ]
-crbug.com/1050754 external/wpt/remote-playback/disable-remote-playback-prompt-throws.html [ Failure ]
-crbug.com/1050754 external/wpt/remote-playback/disable-remote-playback-watch-availability-throws.html [ Failure ]
-crbug.com/1050754 external/wpt/remote-playback/idlharness.window.html [ Failure ]
-crbug.com/1050754 external/wpt/remote-playback/watch-availability-initial-callback.html [ Failure ]
-crbug.com/1050754 external/wpt/reporting/bufferSize.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/reporting/idlharness.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/reporting/idlharness.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/reporting/nestedReport.html [ Failure ]
-crbug.com/1050754 external/wpt/reporting/order.html [ Failure ]
-crbug.com/1050754 external/wpt/reporting/path-absolute-endpoint.https.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/requestidlecallback/callback-idle-periods.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/resize-observer/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/resource-timing/buffer-full-add-after-full-event.html [ Timeout ]
-crbug.com/1050754 external/wpt/resource-timing/buffer-full-add-then-clear.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/resource-timing/buffer-full-set-to-current-buffer.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/resource-timing/buffer-full-then-increased.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/resource-timing/buffered-flag.any.html [ Failure ]
-crbug.com/1050754 external/wpt/resource-timing/crossorigin-sandwich-TAO.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/resource-timing/no-entries-for-cross-origin-css-fetched.sub.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/resource-timing/object-not-found-adds-entry.html [ Failure ]
-crbug.com/1050754 external/wpt/resource-timing/resource-timing-level1.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/resource-timing/resource_dedicated_worker.html [ Failure ]
-crbug.com/1050754 external/wpt/sanitizer-api/idlharness.https.tentative.window.html [ Failure ]
-crbug.com/1050754 external/wpt/sanitizer-api/sanitizer-sanitizeToString.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-capture/feature-policy.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/screen-capture/getdisplaymedia.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/screen-capture/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-orientation/active-lock.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-orientation/event-before-promise.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/screen-orientation/lock-basic.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/screen-orientation/lock-sandboxed-iframe.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-orientation/lock-unlock-check.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/screen-orientation/onchange-event-subframe.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/screen-orientation/onchange-event.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/screen-orientation/orientation-reading.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/screen-wake-lock/idlharness.https.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/screen-wake-lock/wakelock-active-document.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/screen-wake-lock/wakelock-onrelease.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/screen-wake-lock/wakelock-released.https.html [ Crash ]
-crbug.com/1050754 external/wpt/screen-wake-lock/wakelock-request-denied.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/screen-wake-lock/wakelock-screen-type-on-worker.https.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/screen-wake-lock/wakelock-supported-by-feature-policy.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/screen-wake-lock/wakelock-type.https.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/screen-wake-lock/wakelockpermissiondescriptor.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/screen_enumeration/getScreens.tentative.https.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/screen_enumeration/screen_enumeration_permission.https.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/cancel-animation.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/constructor-no-document.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/scroll-animations/constructor.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/animation-shorthand.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/animation-timeline-computed.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/animation-timeline-in-keyframe.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/animation-timeline-none.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/animation-timeline-parsing.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-before-phase.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-cascade.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-dynamic.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-element-offsets.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-inactive-phase.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-offset-invalidation.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-orientation.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-sampling.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-source-invalidation.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-source.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/at-scroll-timeline-start-end.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/css/scroll-timeline-cssom.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/current-time-nan.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/current-time-root-scroller.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/current-time-writing-modes.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/current-time.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/element-based-offset-clamp.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/element-based-offset-unresolved.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/element-based-offset.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/finish-animation.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/scroll-animations/pause-animation.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/play-animation.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/reverse-animation.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/scroll-animation-effect-phases.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/scroll-animation-inactive-timeline.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/scroll-animation.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/scroll-timeline-invalidation.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/scroll-timeline-phases.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/scroll-timeline-snapshotting.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/setting-current-time.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/setting-playback-rate.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/setting-start-time.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/setting-timeline.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/update-playback-rate.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-animations/updating-the-finished-state.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/scroll-to-text-fragment-security.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/scroll-to-text-fragment/scroll-to-text-fragment.html [ Failure ]
-crbug.com/1050754 external/wpt/secure-contexts/basic-dedicated-worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/secure-contexts/basic-popup-and-iframe-tests.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/secure-contexts/basic-popup-and-iframe-tests.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/secure-contexts/basic-shared-worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/secure-contexts/basic-shared-worker.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/secure-contexts/shared-worker-insecure-first.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/secure-contexts/shared-worker-secure-first.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/secure-payment-confirmation/secure-payment-confirmation.tenative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/selection/Document-open.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/selection/addRange-52.html [ Failure ]
-crbug.com/1050754 external/wpt/selection/removeRange.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/selection/script-and-style-elements.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/selection/setBaseAndExtent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy-attribute.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-allowed-by-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-default-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/serial/serial-disabled-by-feature-policy.https.sub.html [ Timeout ]
-crbug.com/1050754 external/wpt/server-timing/server_timing_header-parsing.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/cache-storage/serviceworker/cache-keys-attributes-for-service-worker.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/cache-storage/sandboxed-iframes.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/Service-Worker-Allowed-header.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/ServiceWorkerGlobalScope/registration-attribute.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/about-blank-replacement.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/active.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/claim-shared-worker-fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/claim-using-registration.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/claim-worker-fetch.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/client-navigate.https.html [ Failure Pass Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-get-client-types.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-get.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-client-types.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-exact-controller.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-frozen.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall-order.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/clients-matchall.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/dedicated-worker-service-worker-interception.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/detached-context.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-audio-tainting.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-with-range-request.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-error.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-redirect.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-readable-stream.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-worker-timing-frame.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-header-visibility.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-request-css-base-url.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-request-css-cross-origin.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-request-redirect.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-request-xhr-sync.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-request-xhr.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-waits-for-activate.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/import-scripts-redirect.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/local-url-inherit-controller.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/navigate-window.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/navigation-redirect.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/performance-timeline.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/postmessage-to-client-message-queue.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/postmessage.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/ready.https.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/register-default-scope.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/register-same-scope-different-script-url.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/registration-mime-types.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/registration-schedule-job.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/registration-script-module.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/registration-updateviacache.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/request-end-to-end.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/unregister-then-register-new-script.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/unregister-then-register.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-after-navigation-fetch-event.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-after-oneday.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-bytecheck.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-import-scripts.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-no-cache-request-headers.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-not-allowed.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-on-navigation.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-recovery.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update-registration-with-type.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/update.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/windowclient-navigate.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/worker-client-id.https.html [ Failure ]
-crbug.com/1050754 external/wpt/service-workers/service-worker/worker-interception-redirect.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/shadow-dom/MouseEvent-prototype-offsetX-offsetY.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/capturing-and-bubbling-event-listeners-across-shadow-trees.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/shadow-dom/declarative/declarative-shadow-dom-attachment.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/declarative/declarative-shadow-dom-basic.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/declarative/getinnerhtml.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/declarative/innerhtml-before-closing-tag.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/declarative/move-template-before-closing-tag.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/declarative/script-access.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/focus/click-focus-delegatesFocus-tabindex-varies.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/focus/focus-selector-delegatesFocus.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/shadow-dom/offsetParent-across-shadow-boundaries.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/shadow-dom/slots-imperative-api-slotchange.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/shadow-dom/slots-imperative-slot-api.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/shadow-dom/untriaged/events/event-dispatch/test-003.html [ Timeout ]
-crbug.com/1050754 external/wpt/shadow-dom/untriaged/events/retargeting-focus-events/test-002.html [ Failure ]
-crbug.com/1050754 external/wpt/shadow-dom/untriaged/events/retargeting-focus-events/test-003.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detected-boundingBox-read-only.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detected-postMessage.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-HTMLCanvasElement.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-HTMLImageElement.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-HTMLVideoElement.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-ImageBitmap.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-ImageData-detached.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-ImageData.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-getSupportedFormats.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-on-worker.https.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-options.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detection-security-test.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/detector-same-object.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/idlharness.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/idlharness.https.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/idlharness.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/idlharness.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/shapedetection-cross-origin.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/shape-detection/shapedetection-empty-input.https.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/check-cert-request.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/fallback-to-another-sxg.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/nested-sxg.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error-downgraded.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_fetch_error.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error-downgraded.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_parse_error.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error-downgraded.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-cert_verification_error.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-failed-zero-success-fraction.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-invalid_integrity_header.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-mi_error.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok-no-referrer.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok-origin-referrer.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-ok.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-parse_error.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error-downgraded.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-navigation-signature_verification_error.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error-downgraded.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_fetch_error.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error-downgraded.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_parse_error.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error-downgraded.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-cert_verification_error.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-failed-zero-success-feaction.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-invalid_integrity_header.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-mi_error.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-ok.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-parse_error.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error-downgraded.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/reporting/sxg-reporting-prefetch-signature_verification_error.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/service-workers/sxg-sw-register-after-fallback.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/service-workers/sxg-sw-register.tentative.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/subresource/sxg-subresource-header-integrity-mismatch.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/subresource/sxg-subresource.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-data-cert-url.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-double-prefetch.tentative.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-fallback-with-fragment.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-hsts.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-invalid-validity-url.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-location-fragment.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-location.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-merkle-integrity-error.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-navigation-timing.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-non-secure-origin.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-noncacheable.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-prefetch-resource-timing.tentative.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-prefetch.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-referrer-policy-header.tentative.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-referrer-remote-physical-remote-logical.tentative.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-referrer-remote-physical-same-logical.tentative.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-referrer-same-physical-remote-logical.tentative.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-referrer-same-physical-same-logical.tentative.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-utf8-inner-url.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-variants-match.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-variants-mismatch.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/signed-exchange/sxg-version1b2.tentative.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/speech-api/SpeechRecognition-basics.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/speech-api/SpeechSynthesis-pause-resume.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/speech-api/SpeechSynthesis-speak-events.html [ Failure ]
-crbug.com/1050754 external/wpt/speech-api/SpeechSynthesis-speak-twice.html [ Failure ]
-crbug.com/1050754 external/wpt/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/speech-api/SpeechSynthesisErrorEvent-constructor.html [ Failure ]
-crbug.com/1050754 external/wpt/speech-api/SpeechSynthesisEvent-constructor.html [ Failure ]
-crbug.com/1050754 external/wpt/speech-api/SpeechSynthesisUtterance-basics.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/speech-api/historical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/speech-api/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/storage-access-api/hasStorageAccess.sub.window.html [ Timeout ]
-crbug.com/1050754 external/wpt/storage-access-api/idlharness.window.html [ Failure ]
-crbug.com/1050754 external/wpt/storage-access-api/requestStorageAccess.sub.window.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/storage-access-api/sandboxAttribute.window.html [ Failure ]
-crbug.com/1050754 external/wpt/storage-access-api/storageAccess.testdriver.sub.html [ Failure ]
-crbug.com/1050754 external/wpt/storage/permission-query.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/storage/permission-query.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/streams/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/streams/transferable/shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/svg/animations/end-attribute-change-end-time.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/animations/scripted/onhover-syncbases.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/coordinate-systems/outer-svg-intrinsic-size-001.html [ Failure ]
-crbug.com/1050754 external/wpt/svg/coordinate-systems/outer-svg-intrinsic-size-002.html [ Failure ]
-crbug.com/1050754 external/wpt/svg/extensibility/foreignObject/containing-block.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/cx-invalid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/cy-invalid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/height-computed.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/r-invalid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/rx-invalid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/ry-invalid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/width-computed.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/x-invalid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/parsing/y-invalid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/geometry/svg-baseval-in-display-none.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/interact/scripted/composed.window.svg [ Timeout ]
-crbug.com/1050754 external/wpt/svg/interact/scripted/focus-events.svg [ Timeout ]
-crbug.com/1050754 external/wpt/svg/interact/scripted/tabindex-focus-flag.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/linking/scripted/a.rel-getter-01.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/linking/scripted/a.text-getter-01.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/linking/scripted/a.text-setter-01.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/linking/scripted/href-animate-element.html [ Timeout ]
-crbug.com/1050754 external/wpt/svg/linking/scripted/href-mpath-element.html [ Timeout ]
-crbug.com/1050754 external/wpt/svg/linking/scripted/rellist-feature-detection.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/painting/inheritance.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/fill-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/image-rendering-computed.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/image-rendering-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/stroke-dashoffset-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/stroke-linejoin-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/stroke-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/stroke-width-computed.svg [ Failure ]
-crbug.com/1050754 external/wpt/svg/painting/parsing/stroke-width-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/pservers/parsing/stop-color-invalid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/shapes/animatedPoints-non-animated.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/struct/UnknownElement/interface.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/struct/scripted/autofocus-attribute.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/styling/presentation-attributes-irrelevant.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/styling/presentation-attributes-relevant.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/styling/presentation-attributes-special-cases.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/styling/presentation-attributes-unknown.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/styling/required-properties.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/text/inheritance.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/text/parsing/shape-inside-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/text/parsing/shape-subtract-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/text/parsing/text-decoration-fill-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/text/parsing/text-decoration-stroke-valid.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/types/elements/SVGGeometryElement-rect.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/types/scripted/SVGAnimatedRect.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/types/scripted/SVGGeometryElement.isPointInFill-01.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/types/scripted/SVGGeometryElement.isPointInStroke-01.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/types/scripted/SVGGraphicsElement.getBBox-02.html [ Failure ]
-crbug.com/1050754 external/wpt/svg/types/scripted/SVGGraphicsElement.svg [ Failure Pass ]
-crbug.com/1050754 external/wpt/svg/types/scripted/SVGLength-px.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/touch-events/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/trust-tokens/end-to-end/has-trust-token-with-no-top-frame.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/trust-tokens/trust-token-parameter-validation-xhr.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/trust-tokens/trust-token-parameter-validation.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/ua-client-hints/idlharness.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/ua-client-hints/idlharness.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/uievents/legacy/Event-subclasses-init.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/focus-events/focus-automated-blink-webkit.html [ Timeout ]
-crbug.com/1050754 external/wpt/uievents/order-of-events/mouse-events/wheel-basic.html [ Timeout ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/iframe-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/xhr.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-classic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-classic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-module.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic-data.meta/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-classic.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/unset/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module-data.meta/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/websocket.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/sharedworker-module.http-rp/upgrade/xhr.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/fetch.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/iframe-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/worklet-audio.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/unset/worklet-paint.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/iframe-tag.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-classic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/sharedworker-module.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worker-classic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worker-import.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worker-module.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worklet-animation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worklet-audio-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worklet-audio.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worklet-layout.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/srcdoc-inherit.meta/upgrade/worklet-paint.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/iframe-tag.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-classic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/sharedworker-module.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/worker-classic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/worker-module.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/worklet-animation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.http-rp/upgrade/worklet-layout.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/unset/iframe-tag.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-classic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/sharedworker-module.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/worker-classic.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/worker-module.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/worklet-animation-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/worklet-animation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/worklet-layout-import-data.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/gen/top.meta/upgrade/worklet-layout.https.html [ Failure ]
-crbug.com/1050754 external/wpt/upgrade-insecure-requests/link-upgrade.sub.https.html [ Failure ]
-crbug.com/1050754 external/wpt/url/a-element-origin-xhtml.xhtml [ Failure ]
-crbug.com/1050754 external/wpt/url/a-element-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/url/a-element-xhtml.xhtml [ Failure ]
-crbug.com/1050754 external/wpt/url/a-element.html [ Failure ]
-crbug.com/1050754 external/wpt/url/failure.html [ Failure ]
-crbug.com/1050754 external/wpt/url/historical.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/url/historical.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/url/toascii.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/url/url-constructor.html [ Failure ]
-crbug.com/1050754 external/wpt/url/url-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/url/url-setters.html [ Failure ]
-crbug.com/1050754 external/wpt/user-timing/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/vibration/silent-ignore.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-before-xr-session.https.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-dom.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-during-xr-session.https.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-parallel.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-repeating.html [ Failure ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback-webrtc.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/video-rvfc/request-video-frame-callback.html [ Failure ]
-crbug.com/1050754 external/wpt/visual-viewport/viewport-read-size-causes-layout.html [ Failure ]
-crbug.com/1050754 external/wpt/visual-viewport/viewport-scrollbars-cause-resize.html [ Failure ]
-crbug.com/1050754 external/wpt/visual-viewport/viewport-unscaled-size.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/constructor/multi-value.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/functions/entry-different-function-realm.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/functions/entry.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/functions/incumbent.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/instance/constructor-caching.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/instance/constructor-caching.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor-shared.tentative.any.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor-shared.tentative.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/constructor.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/grow.any.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/memory/grow.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/jsapi/table/grow-reftypes.tentative.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/arraybuffer/transfer.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/broadcastchannel-success-and-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/broadcastchannel-success.html [ Timeout ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/nested-worker-success.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/no-transferring.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/serialization-via-notifications-api.any.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/serialization-via-notifications-api.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/serialization/module/window-sharedworker-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/contenttype.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/empty-body.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/webapi/empty-body.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/webapi/empty-body.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/empty-body.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/wasm/webapi/historical.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/instantiateStreaming-bad-imports.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/instantiateStreaming.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/invalid-args.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/invalid-code.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/rejected-arg.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/status.any.html [ Timeout ]
-crbug.com/1050754 external/wpt/wasm/webapi/status.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/wasm/webapi/status.any.worker.html [ Timeout ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/animation-types/addition-per-property-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/animation-types/addition-per-property-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/combining-effects/applying-interpolated-transform.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/combining-effects/effect-composition.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/keyframe-effects/computed-keyframes-shorthands.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/keyframe-effects/effect-value-context-filling.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/keyframe-effects/effect-value-context.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/animation-model/keyframe-effects/effect-value-replaced-animations.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animatable/animate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animatable/getAnimations.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/cancel.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/commitStyles.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/finished.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/oncancel.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/onfinish.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/onremove.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/pause.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/pending.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/persist.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/play.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/ready.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/startTime.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Animation/style-change-events.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/AnimationEffect/updateTiming.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/AnimationPlaybackEvent/constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/Document/timeline.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/DocumentTimeline/constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/DocumentTimeline/document-timeline-phases.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/DocumentTimeline/style-change-events.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/composite.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/copy-constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/getKeyframes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/iterationComposite.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/setKeyframes.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/style-change-events.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/interfaces/KeyframeEffect/target.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animation-effects/current-iteration.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/canceling-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/finishing-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/pausing-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/play-states.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/playing-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/reversing-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/the-current-time-of-an-animation.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/animations/updating-the-finished-state.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/timelines/document-timelines.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/timelines/timelines.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/timelines/update-and-send-events-replacement.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/web-animations/timing-model/timelines/update-and-send-events.html [ Failure ]
-crbug.com/1050754 external/wpt/web-bundle/wbn-from-network/wbn-location.tentative.html [ Timeout ]
-crbug.com/1050754 external/wpt/web-locks/acquire.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/clientids.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/held.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/idlharness.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/ifAvailable.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/lock-attributes.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-exclusive.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-mixed.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/mode-shared.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/non-secure-context.tentative.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/query-empty.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/resource-names.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/secure-context.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/signal.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-locks/steal.tentative.https.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/web-nfc/NDEFMessage_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-nfc/NDEFReader_scan.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-nfc/NDEFReader_scan_iframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-nfc/NDEFReader_write.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-nfc/NDEFReadingEvent_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-nfc/NDEFRecord_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-nfc/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/web-nfc/nfc_permission.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/web-otp/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/web-share/canShare-files.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-share/canShare.tentative.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-share/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/web-share/share-consume-activation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-share/share-empty.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-share/share-sharePromise-internal-slot.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/web-share/share-url-invalid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/web-share/share-without-user-gesture.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/processing-model/cycle-without-delay.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/processing-model/delay-time-clamping.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/processing-model/feedback-delay-time.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-analysernode-interface/test-analyser-minimum.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audiocontext-interface/processing-after-resume.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioparam-interface/event-insertion.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-messageport.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-promises.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/process-getter.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/process-parameters.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/processor-construction-port.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-audioworklet-interface/suspended-context-messageport.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-constantsourcenode-interface/test-constantsourcenode.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-delaynode-interface/delaynode-channel-count-1.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-badargs-authnrselection.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-badargs-challenge.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-badargs-user.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-excludecredentials.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-extensions.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-getpublickey.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-large-blob-not-supported.https.html [ Crash ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-large-blob-supported.https.html [ Crash ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-pubkeycredparams.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/createcredential-timeout.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/getcredential-badargs-rpid.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/getcredential-badargs-userverification.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/getcredential-extensions.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/getcredential-large-blob-not-supported.https.html [ Crash ]
-crbug.com/1050754 external/wpt/webauthn/getcredential-large-blob-supported.https.html [ Crash ]
-crbug.com/1050754 external/wpt/webauthn/getcredential-passing.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/getcredential-rk-passing.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/getcredential-timeout.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webauthn/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webauthn/webauthn-testdriver-basic.https.html [ Crash Failure ]
-crbug.com/1050754 external/wpt/webcodecs/audio-decoder.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webcodecs/video-decoder.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webcodecs/video-encoder.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webcodecs/video-frame-serialization.html [ Failure ]
-crbug.com/1050754 external/wpt/webcodecs/video-frame.html [ Failure ]
-crbug.com/1050754 external/wpt/webcodecs/video-track-reader.html [ Failure ]
-crbug.com/1050754 external/wpt/webmessaging/broadcastchannel/basics.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webmessaging/broadcastchannel/sandbox.html [ Failure ]
-crbug.com/1050754 external/wpt/webmessaging/broadcastchannel/workers.html [ Failure ]
-crbug.com/1050754 external/wpt/webmessaging/message-channels/close.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webmessaging/with-options/broken-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/webmessaging/with-ports/001.html [ Failure ]
-crbug.com/1050754 external/wpt/webmessaging/without-ports/001.html [ Failure ]
-crbug.com/1050754 external/wpt/webmidi/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc-extensions/RTCRtpSynchronizationSource-captureTimestamp.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-identity/RTCPeerConnection-constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc-identity/RTCPeerConnection-getIdentityAssertion.sub.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc-identity/RTCPeerConnection-peerIdentity.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc-identity/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCEncodedAudioFrame-serviceworker-failure.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCEncodedVideoFrame-serviceworker-failure.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-audio.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-errors.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-legacy.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-simulcast.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-video-frames.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-video.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-encoded-transform/RTCPeerConnection-insertable-streams-worker.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-stats/getStats-remote-candidate-address.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc-svc/RTCRtpParameters-scalability.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/RTCCertificate-postMessage.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCCertificate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCConfiguration-iceServers.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCConfiguration-iceTransportPolicy.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCDTMFSender-insertDTMF.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/RTCDTMFSender-ontonechange-long.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/RTCDTMFSender-ontonechange.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCDataChannel-bufferedAmount.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCDataChannel-close.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCDataChannel-send-blob-order.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCDataChannel-send.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCDtlsTransport-getRemoteCertificates.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCDtlsTransport-state.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCIceConnectionState-candidate-pair.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCIceTransport-extension.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webrtc/RTCIceTransport.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-addIceCandidate-connectionSetup.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-addIceCandidate-timing.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-addIceCandidate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-candidate-in-sdp.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-connectionState.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-createAnswer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-createDataChannel.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-createOffer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-explicit-rollback-iceGatheringState.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-generateCertificate.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-getStats.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-helper-test.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-iceGatheringState.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-ondatachannel.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-onicecandidateerror.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-onsignalingstatechanged.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-operations.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-perfect-negotiation.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-remote-track-mute.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-removeTrack.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-restartIce-onnegotiationneeded.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setDescription-transceiver.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setLocalDescription-answer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setLocalDescription-offer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setLocalDescription-parameterless.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setLocalDescription-rollback.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-simulcast.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-setRemoteDescription.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-track-stats.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnection-videoDetectorTest.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCPeerConnectionIceEvent-constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCRtpReceiver-getParameters.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCRtpReceiver-getStats.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCRtpSender-getStats.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCRtpSender-replaceTrack.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCRtpSender-setParameters.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCRtpTransceiver-stop.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCSctpTransport-events.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCSctpTransport-maxChannels.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/RTCTrackEvent-constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/RTCTrackEvent-fire.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/datachannel-emptystring.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/getstats.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/historical.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/no-media-call.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/promises-call.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/protocol/bundle.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/protocol/candidate-exchange.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/protocol/crypto-suite.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/protocol/dtls-fingerprint-validation.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/protocol/ice-state.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/protocol/split.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/protocol/unbundled-pt-demuxing.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/protocol/video-codecs.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webrtc/simplecall-no-ssrcs.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simplecall.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/basic.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/getStats.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/setParameters-active.https.html [ Timeout ]
-crbug.com/1050754 external/wpt/webrtc/simulcast/vp8.https.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/websockets/Create-blocked-port.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/Create-blocked-port.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/Create-on-worker-shutdown.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/Create-on-worker-shutdown.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/Create-protocols-repeated-case-insensitive.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/basic-auth.any.serviceworker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/basic-auth.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/bufferedAmount-unchanged-by-sync-xhr.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/constructor/002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/constructor/002.html?wss [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/007.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/007.html?wss [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/cookies/third-party-cookie-accepted.https.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/close/close-connecting.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/close/close-connecting.html?wss [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/close/close-nested.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/close/close-nested.html?wss [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/readyState/003.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/interfaces/WebSocket/readyState/003.html?wss [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/opening-handshake/005.html?wss [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/abort.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-receive.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/backpressure-send.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/close.any.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/close.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/close.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/close.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/stream/tentative/constructor.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/websockets/unload-a-document/002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/unload-a-document/002.html?wss [ Failure Pass ]
-crbug.com/1050754 external/wpt/websockets/unload-a-document/004.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webstorage/set.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webstorage/storage_builtins.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webstorage/storage_session_window_noopener.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webstorage/symbol-props.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webtransport/quic/constructor.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webtransport/quic/constructor.any.serviceworker.html [ Failure ]
-crbug.com/1050754 external/wpt/webtransport/quic/constructor.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/webtransport/quic/constructor.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/idlharness.https.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webusb/idlharness.https.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webusb/usb.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usb.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usb.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usb.serviceworker.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webusb/usbAlternateInterface.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbAlternateInterface.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbConfiguration.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbConfiguration.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbConnectionEvent.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbConnectionEvent.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbDevice-iframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbDevice-worker.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbDevice.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbDevice.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbEndpoint.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbEndpoint.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbInterface.https.any.html [ Failure ]
-crbug.com/1050754 external/wpt/webusb/usbInterface.https.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTCue/constructor.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTCue/getCueAsHTML.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTCue/lineAlign.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTCue/positionAlign.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTCue/region.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/constructor.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/id.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/lines.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/non-visible-cue-with-region.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/regionAnchorX.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/regionAnchorY.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/scroll.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/viewportAnchorX.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/viewportAnchorY.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/VTTRegion/width.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/historical.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/api/idlharness.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/header-regions.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/regions-edge-case.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/regions-id.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/regions-lines.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/regions-old.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/regions-regionanchor.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/regions-scroll.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/regions-viewportanchor.html [ Failure ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/settings-line.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/settings-position.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webvtt/parsing/file-parsing/tests/settings-region.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_create_move.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_delay_creation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_failure.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_freefloating_pause_resume_stop.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/ar_anchor_states.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/anchors/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrSession_environmentBlendMode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/ar-module/xrSession_interactionMode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/dom-overlay/nested_fullscreen.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_input_source_recreation.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_input_sources_change.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_referenceSpace_reset_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_referenceSpace_reset_inline.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_select.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_select_subframe.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/events_session_squeeze.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/exclusive_requestFrame_nolayer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/gamepads-module/idlharness.https.window.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/gamepads-module/xrInputSource_gamepad_disconnect.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getInputPose_handedness.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getInputPose_pointer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/getViewerPose_emulatedPosition.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_source_cancel.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_inputSources.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_refSpaces.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_states_regular.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_states_transient.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/ar_hittest_subscription_transientInputSources.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/idlharness.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/xrRay_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/hit-test/xrRay_matrix.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/idlharness.https.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/webxr/navigator_xr_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_update.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_vertical_fov_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/render_state_vertical_fov_inline.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_create_xrcompatible.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_makecompatible_contextlost.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webGLCanvasContext_makecompatible_reentrant.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webxr-supported-by-feature-policy.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/webxr_feature_policy.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrBoundedReferenceSpace_updates.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_disconnect_ends.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_isSessionSupported_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_isSessionSupported_immersive_unsupported.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_isSessionSupported_inline.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_immersive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_immersive_no_gesture.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_immersive_unsupported.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_no_mode.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_non_immersive_no_gesture.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_optionalFeatures.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrDevice_requestSession_requiredFeatures_unknown.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_getPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_getViewerPose_getPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_lifetime.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrFrame_session_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_add_remove.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_emulatedPosition.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_profiles.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrInputSource_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrPose_transform_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffset.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffsetBounded.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_originOffset_viewer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrReferenceSpace_relationships.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_inverse.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_matrix.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrRigidTransform_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_cancelAnimationFrame.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_cancelAnimationFrame_invalidhandle.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_end.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_features_deviceSupport.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_input_events_end.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_prevent_multiple_exclusive.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_callback_calls.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_data_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestAnimationFrame_timestamp.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestReferenceSpace.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestReferenceSpace_features.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_requestSessionDuringEnd.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_viewer_availability.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_viewer_referenceSpace.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrSession_visibilityState.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_eyes.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_match.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_oneframeupdate.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrView_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrViewerPose_views_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrViewport_valid.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_constructor.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_draw.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_sameObject.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_framebuffer_scale.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_opaque_framebuffer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html [ Failure ]
-crbug.com/1050754 external/wpt/webxr/xrWebGLLayer_viewports.https.html [ Failure ]
-crbug.com/1050754 external/wpt/window-segments/getWindowSegments.https.tentative.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-MessageEvent-source.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-constructor.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-detach-frame-in-error-event.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-exception-propagation.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-exception.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-replace-EventHandler.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-script-error.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker-simple.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorkerPerformanceNow.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker_blobUrl.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/SharedWorker_dataUrl.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/Worker-base64.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-constructor-proto.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-custom-event.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-location.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-multi-port.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-event-handler.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-global-constructor.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/Worker-replace-self.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/WorkerNavigator-hardware-concurrency.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/WorkerNavigator.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/WorkerNavigator_appVersion.htm [ Failure ]
-crbug.com/1050754 external/wpt/workers/WorkerNavigator_userAgentData.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/Worker_script_mimetype.htm [ Failure ]
-crbug.com/1050754 external/wpt/workers/abrupt-completion.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/workers/baseurl/alpha/importScripts-in-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/baseurl/alpha/sharedworker-in-worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/baseurl/alpha/xhr-in-moduleworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/baseurl/alpha/xhr-in-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/Infinity-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/NaN-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/URLMismatchError.htm [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/connect-event.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/dummy-name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/dummy-shared-worker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/empty-name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/global-members.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/interface-objects.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/name.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/no-arguments-ctor.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/null-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/number-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-onmessage.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-properties.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/port-readonly.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/same-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/setting-port-members.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/undefined-arguments.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/unexpected-global-properties.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/constructors/SharedWorker/unresolvable-url.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/constructors/Worker/expected-self-properties.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/data-url-shared.html [ Timeout ]
-crbug.com/1050754 external/wpt/workers/dedicated-worker-in-data-url-context.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/examples/general.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/examples/onconnect.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/importscripts_mime.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/getting.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/SharedWorkerGlobalScope/onconnect.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/location/redirect-sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/location/returns-same-object.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerGlobalScope/self.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/002.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/catch.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-cross-origin.sub.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-redirect-to-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-same-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-same-origin.sub.any.worker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-redirect-to-cross-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/interfaces/WorkerUtils/importScripts/report-error-setTimeout-same-origin.sub.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/dedicated-worker-import-meta.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-blob-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-csp.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-data-url-cross-origin.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-data-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-meta.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import-referrer.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-import.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-options-credentials.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-options-type.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/modules/shared-worker-parse-error-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/name-property.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/opaque-origin.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/postMessage_block.https.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/encodings/001.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/semantics/encodings/002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/semantics/encodings/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/interface-objects/001.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/semantics/interface-objects/002.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/semantics/interface-objects/003.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/interface-objects/004.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/001.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/008.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/exposure.any.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/multiple-workers/exposure.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/navigation/002.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/001.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/002.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/reporting-errors/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/run-a-worker/002.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/run-a-worker/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/structured-clone/shared.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/003.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/004.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/semantics/xhr/006.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-from-blob-url.window.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-in-data-url-context.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/workers/shared-worker-name-via-options.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-options-mismatch.html [ Failure ]
-crbug.com/1050754 external/wpt/workers/shared-worker-parse-error-failure.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/animation-worklet-credentials.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/worklets/animation-worklet-csp.https.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/animation-worklet-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/animation-worklet-referrer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/animation-worklet-service-worker-interception.https.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/audio-worklet-credentials.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/worklets/layout-worklet-credentials.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/worklets/layout-worklet-csp.https.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/layout-worklet-import.https.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/layout-worklet-referrer.https.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/layout-worklet-service-worker-interception.https.html [ Failure ]
-crbug.com/1050754 external/wpt/worklets/paint-worklet-credentials.https.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/worklets/paint-worklet-csp.https.html [ Pass Timeout ]
-crbug.com/1050754 external/wpt/xhr/abort-after-send.any.html [ Failure ]
-crbug.com/1050754 external/wpt/xhr/abort-after-send.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/abort-after-timeout.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/access-control-basic-allow-preflight-cache-timeout.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/data-uri.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/event-readystatechange-loaded.any.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/xhr/event-readystatechange-loaded.any.worker.html [ Failure Timeout ]
-crbug.com/1050754 external/wpt/xhr/event-timeout-order.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/event-timeout.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/idlharness.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/xhr/idlharness.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/open-during-abort-processing.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/open-url-multi-window-2.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/open-url-multi-window-3.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/open-url-multi-window-4.htm [ Timeout ]
-crbug.com/1050754 external/wpt/xhr/open-url-multi-window-5.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/open-url-multi-window-6.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/open-url-redirected-sharedworker-origin.htm [ Failure ]
-crbug.com/1050754 external/wpt/xhr/overridemimetype-blob.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/preserve-ua-header-on-redirect.htm [ Failure ]
-crbug.com/1050754 external/wpt/xhr/response-data-progress.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/response-json.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/responseType-document-in-worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/responseXML-unavailable-in-worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/responsetype.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/responsexml-media-type.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/send-after-setting-document-domain.htm [ Pass Timeout ]
-crbug.com/1050754 external/wpt/xhr/send-authentication-cors-setrequestheader-no-cred.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/send-content-type-charset.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/send-data-sharedarraybuffer.any.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/send-data-sharedarraybuffer.any.worker.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/send-no-response-event-order.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/setrequestheader-combining.window.html [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/setrequestheader-content-type.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/setrequestheader-header-allowed.htm [ Failure Pass ]
-crbug.com/1050754 external/wpt/xhr/status-async.htm [ Failure ]
-crbug.com/1050754 external/wpt/xhr/status-basic.htm [ Failure ]
-crbug.com/1050754 external/wpt/xhr/status-error.htm [ Timeout ]
-crbug.com/1050754 external/wpt/xhr/sync-no-timeout.any.sharedworker.html [ Failure ]
-crbug.com/1050754 external/wpt/dom/xslt/transformToFragment.tentative.window.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/css3/flexbox/flexbox-baseline.html b/third_party/blink/web_tests/css3/flexbox/flexbox-baseline.html
deleted file mode 100644
index 24d2704..0000000
--- a/third_party/blink/web_tests/css3/flexbox/flexbox-baseline.html
+++ /dev/null
@@ -1,221 +0,0 @@
-<!DOCTYPE html>
-<html>
-<style>
-body {
-    margin: 0;
-}
-.inline-flexbox {
-    display: inline-flex;
-    background-color: lightgrey;
-    margin-top: 5px;
-}
-.flexbox {
-    display: flex;
-    background-color: grey;
-    margin-top: 10px;
-}
-.column {
-    flex-flow: column;
-}
-.column-reverse {
-    flex-flow: column-reverse;
-}
-</style>
-
-<body style="position: relative">
-
-<!-- If any of the flex items on the flex container's first line participate
-in baseline alignment, the flex container's main-axis baseline is the baseline
-of those flex items. -->
-<div>
-before text
-<div class="inline-flexbox" style="height: 50px;">
-    <div style="align-self: flex-end">below</div>
-    <div style="align-self: baseline; margin-top: 15px">baseline</div>
-    <div style="align-self: flex-start">above</div>
-</div>
-after text
-</div>
-
-<div>
-before text
-<div class="inline-flexbox" style="height: 40px">
-    <div style="align-self: flex-end">baseline</div>
-    <div style="align-self: flex-start">above</div>
-</div>
-after text
-</div>
-
-<div>
-before text
-<div class="inline-flexbox">
-    <h2>h2 baseline</h2>
-    <div>above</div>
-</div>
-after text
-</div>
-
-<div>
-before text
-<div class="inline-flexbox">
-    <div>baseline</div>
-    <h2>h2 below</h2>
-</div>
-after text
-</div>
-
-<!-- If the first flex item has an orthogonal baseline, use the synthesized
-baseline (bottom of the content box of the first item). -->
-<div>
-should align with the middle
-<div class="inline-flexbox" style="width: 40px; height: 40px">
-    <div style="writing-mode: vertical-rl; height: 20px; width: 40px; border-bottom: 1px solid black"></div>
-</div>
-of the grey flexbox
-</div>
-
-<!-- If there are no flexitems, align to the bottom of the box. -->
-<div>
-should align with the bottom
-<div class="inline-flexbox" style="width: 30px; height: 30px">
-</div>
-of the grey flexbox
-</div>
-
-
-<!-- cross-axis (column) test cases. -->
-<div>
-before text
-<div class="inline-flexbox column">
-    <div>baseline</div>
-    <div>below</div>
-</div>
-after text
-</div>
-
-<div>
-before text
-<div class="inline-flexbox column-reverse">
-    <div>baseline</div>
-    <div>above</div>
-</div>
-after text
-</div>
-
-<!-- If the first flex item has an orthogonal baseline, use the synthesized
-baseline (bottom of the content box of the first item). -->
-<div>
-should align with the middle
-<div class="inline-flexbox column" style="width: 40px; height: 40px;">
-    <div style="writing-mode: vertical-rl; width: 40px; height: 20px; border-bottom: 1px solid black"></div>
-    <div style="writing-mode: vertical-rl; width: 40px; height: 20px"></div>
-</div>
-of the grey flexbox
-</div>
-
-<!-- If there are no flexitems, align to the bottom of the box. -->
-<div>
-should align with the bottom
-<div class="inline-flexbox column" style="width: 30px; height: 30px">
-</div>
-of the grey flexbox
-</div>
-
-<!-- More tests on the right side of the page. -->
-<div style="position: absolute; top: 0; left: 400px; width: 360px">
-
-<!-- Ignore absolutely positioned flex items. -->
-<div>
-before text
-<div class="inline-flexbox">
-    <div style="position: absolute">absolute</div>
-    <div style="margin-top: 30px">baseline</div>
-</div>
-after text
-</div>
-
-<!-- We don't participate in baseline alignment if there's an auto margin. -->
-<div>
-before text
-<div class="inline-flexbox" style="height: 40px;">
-    <div>baseline</div>
-    <div style="align-self: baseline; margin-top: auto">below</div>
-</div>
-after text
-</div>
-
-<div>
-before text
-<div style="display: inline-block">
-<div class="inline-flexbox" style="height: 40px;">
-    <div>above</div>
-    <div style="align-self: baseline; margin-top: 10px">baseline</div>
-    <div>above</div>
-</div>
-after
-</div>
-text
-</div>
-
-<!-- The spec is a little unclear what should happen here. For now, align to
-the last line box. -->
-<div>
-before text
-<div style="display: inline-block">
-<div class="flexbox" style="height: 30px;">
-  baseline
-</div>
-</div>
-after text
-</div>
-
-<table style="background-color: lightgrey; margin-top: 5px">
-<tr style="height: 50px">
-  <td style="vertical-align: bottom">bottom</td>
-  <td style="vertical-align: baseline">baseline</td>
-  <td style="vertical-align: top">top</td>
-  <td style="vertical-align: baseline"><div class="flexbox column">
-      <div>baseline</div>
-      <div>below</div>
-  </div></td>
-  <td style="vertical-align: baseline"><div class="flexbox column-reverse">
-      <div>baseline</div>
-      <div>above</div>
-  </div></td>
-</tr>
-</table>
-
-<table style="background-color: lightgrey; margin-top: 5px">
-<tr style="height: 50px">
-  <td style="vertical-align: bottom">bottom</td>
-  <td style="vertical-align: baseline">baseline</td>
-  <td style="vertical-align: top">top</td>
-  <td style="vertical-align: baseline"><div class="flexbox">
-    <h2>h2 baseline</h2>
-    <div>above</div>
-  </div></td>
-</table>
-
-<!-- If a box contributing a baseline has a scrollbar, the box must be treated
-as being in its initial scroll position when computing the baseline. -->
-<div>
-before text
-<div id="flexbox-with-scrollbar" class="inline-flexbox" style="height: 65px; width: 150px">
-    <div id="flexitem-with-scrollbar" style="align-self: baseline; padding-top: 15px; height: 50px; overflow-y: scroll;">
-        The baseline is based on<br>
-        the non-scrolled position;<br>
-        this won't line up.
-    </div>
-</div>
-after text
-</div>
-
-</div>
-
-<script>
-document.getElementById("flexitem-with-scrollbar").scrollTop = 999;
-document.getElementById("flexbox-with-scrollbar").style.width = "auto";
-</script>
-
-</body>
-</html>
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 1a49fa4..81eaf1b 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
@@ -331063,7 +331063,7 @@
      []
     ],
     "webidl.idl": [
-     "43748c5ac4c889b73a8e78b8732ae6b235684266",
+     "9993673361aad662b83e96b491ddf6c6864f9100",
      []
     ],
     "webmidi.idl": [
@@ -338857,7 +338857,7 @@
      []
     ],
     "getdisplaymedia.https-expected.txt": [
-     "c47ba50cb142e7bbaaf8459f44ff532845b51b30",
+     "4cdf6f2574d11071332d57eef4113c77b312ee9d",
      []
     ],
     "permissions-policy-audio.https.sub-expected.txt": [
@@ -348419,7 +348419,11 @@
       "0e4f14b96247b4855fbda1df2a719b61b07f4a48",
       []
      ]
-    }
+    },
+    "idlharness-shadowrealm.window-expected.txt": [
+     "2db45e1a047c174b9c072cddd88d6f749c59eb7c",
+     []
+    ]
    },
    "webmessaging": {
     "DIR_METADATA": [
@@ -538782,7 +538786,7 @@
      ]
     ],
     "getdisplaymedia.https.html": [
-     "33e70acacbf6a3d88adb7e8626afee1dbfa6abb3",
+     "69b47474be0192f5fa860fec89133b14320f0760",
      [
       null,
       {
@@ -546832,9 +546836,17 @@
       ]
      ],
      "referrer-policy.https.html": [
-      "e3c6e8aeb06c6b4bd9b3c38b5a7982a885886ca3",
+      "6d942fad0ddee198ab5dedbd61c67248de6e5316",
       [
-       null,
+       "speculation-rules/prefetch/referrer-policy.https.html?1-1",
+       {}
+      ],
+      [
+       "speculation-rules/prefetch/referrer-policy.https.html?2-2",
+       {}
+      ],
+      [
+       "speculation-rules/prefetch/referrer-policy.https.html?3-last",
        {}
       ]
      ],
@@ -571674,6 +571686,20 @@
       ]
      ]
     },
+    "idlharness-shadowrealm.window.js": [
+     "ab1ca9a0198720d537744cdc8777205317b41f58",
+     [
+      "webidl/idlharness-shadowrealm.window.html",
+      {
+       "script_metadata": [
+        [
+         "script",
+         "/resources/idlharness-shadowrealm.js"
+        ]
+       ]
+      }
+     ]
+    ],
     "idlharness.any.js": [
      "3c662ba8e63f2f585ce1c5674eb1e165e5810313",
      [
@@ -574305,6 +574331,16 @@
        }
       ]
      ],
+     "rid-manipulation.html": [
+      "a88506305a1d58944e6e6c2f01b26d8aef882909",
+      [
+       null,
+       {
+        "testdriver": true,
+        "timeout": "long"
+       }
+      ]
+     ],
      "setParameters-active.https.html": [
       "86afa4082e27e5b6afa43f3e2a1f71766511dcc7",
       [
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-001.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-001.html
new file mode 100644
index 0000000..dda6c37
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-001.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines">
+<style>
+.target {
+  display: flex;
+  position: relative;
+  line-height: 0;
+  font-size: 20px;
+  inline-size: 200px;
+  margin-block: 10px;
+  padding: 10px;
+  border: solid 3px;
+}
+
+.inner {
+  display: flex;
+  border: solid 5px;
+  padding: 10px;
+}
+
+span {
+  display: inline-block;
+  width: 1em;
+  height: 1em;
+  outline: solid cyan 3px;
+  outline-offset: -3px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.target > *')">
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" style="flex-direction: row-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" style="flex-direction: row-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" style="flex-direction: column;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="flex-direction: column;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" style="flex-direction: column-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="flex-direction: column-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<!-- flex-wrap: wrap -->
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="25"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="70"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: row-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: row-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="25"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="50"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column-reverse; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column-reverse; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<!-- flex-wrap: wrap-reverse -->
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="70"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="40"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: row-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="60"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: row-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column-reverse; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column-reverse; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-002.html
new file mode 100644
index 0000000..fc8e9f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-002.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines">
+<style>
+.target {
+  display: flex;
+  position: relative;
+  line-height: 0;
+  font-size: 20px;
+  inline-size: 200px;
+  margin-inline: 10px;
+  padding: 10px;
+  border: solid 3px;
+  writing-mode: vertical-rl;
+}
+
+.inner {
+  display: flex;
+  border: solid 5px;
+  padding: 10px;
+}
+
+span {
+  display: inline-block;
+  width: 1em;
+  height: 1em;
+  outline: solid cyan 3px;
+  outline-offset: -3px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.target > *')">
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" style="flex-direction: row-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" style="flex-direction: row-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="50"><span></span></div>
+  <div class="inner" style="flex-direction: column;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" style="flex-direction: column;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" style="flex-direction: column-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="20"><span></span></div>
+  <div class="inner" style="flex-direction: column-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<!-- flex-wrap: wrap -->
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="70"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="33"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="65"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: row-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="45"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: row-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="55"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="38"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="50"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column-reverse; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="20"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column-reverse; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<!-- flex-wrap: wrap-reverse -->
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="75"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="63"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: row-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="35"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: row-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="60"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="43"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column-reverse; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="25"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column-reverse; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-003.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-003.html
new file mode 100644
index 0000000..0d2c2a7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-003.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines">
+<style>
+.target {
+  display: flex;
+  position: relative;
+  line-height: 0;
+  font-size: 20px;
+  inline-size: 200px;
+  margin-block: 10px;
+  padding: 10px;
+  border: solid 3px;
+}
+
+.inner {
+  display: flex;
+  border: solid 5px;
+  padding: 10px;
+  gap: 10px;
+}
+
+span {
+  display: inline-block;
+  width: 1em;
+  height: 1em;
+  outline: solid cyan 3px;
+  outline-offset: -3px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.target > *')">
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="115"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="115"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="115"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="115"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-004.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-004.html
new file mode 100644
index 0000000..eaedd81
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/alignment/flex-align-baseline-flex-004.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines">
+<style>
+.target {
+  display: flex;
+  position: relative;
+  line-height: 0;
+  font-size: 20px;
+  inline-size: 200px;
+  margin-block: 10px;
+  padding: 10px;
+  border: solid 3px;
+  writing-mode: vertical-rl;
+}
+
+.inner {
+  display: flex;
+  border: solid 5px;
+  padding: 10px;
+  gap: 10px;
+}
+
+span {
+  display: inline-block;
+  width: 1em;
+  height: 1em;
+  outline: solid cyan 3px;
+  outline-offset: -3px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.target > *')">
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="110"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="110"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="105"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="105"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="45"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="45"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002-ref.html
index 361f096..491144c 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002-ref.html
@@ -17,11 +17,10 @@
     .flexContainer {
       display: inline-block;
       width: 40px;
-      /* Split testcase's 40px height into 20px of padding-top and 20px of
-         height, to set aside space for the testcase's (invisible) second line
-         (which is above the first line, since this is wrap-reverse) */
+      /* Split testcase's 40px height into 20px of padding-bottom and 20px of
+         height, to set aside space for the testcase's (invisible) second line. */
       height: 20px;
-      padding-top: 20px;
+      padding-bottom: 20px;
       background: lightblue;
     }
     .flexContainer > * {
@@ -48,20 +47,13 @@
   a
   <!-- Flex containers with flex items that have a mix of baselines: -->
   <div class="flexContainer medFont">
-    <div class="medFont">b</div
-    ><div class="bigFont unaligned">c</div>
+    <div class="bigFont">d</div
+    ><div class="medFont unaligned">e</div>
   </div>
 
   <div class="flexContainer bigFont">
-    <div class="bigFont">f</div
-    ><div class="smallFont unaligned">g</div>
-  </div>
-
-  <!-- Flex container with second line baseline-aligned
-       (shouldn't make a difference) -->
-  <div class="flexContainer smallFont">
-    <div class="smallFont">j</div
-    ><div class="bigFont unaligned">k</div>
+    <div class="bigFont">h</div
+    ><div class="medFont unaligned">i</div>
   </div>
   n
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002.html
index bd13de7..a58a7ec5 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-horiz-002.html
@@ -33,8 +33,8 @@
 
     /* We'll make the second flex line not paint anything, so that the
        reference case doesn't need to bother matching it. */
-    .flexContainer > *:nth-child(3),
-    .flexContainer > *:nth-child(4) {
+    .flexContainer > *:nth-child(1),
+    .flexContainer > *:nth-child(2) {
       visibility: hidden;
     }
 
@@ -65,17 +65,8 @@
   <div class="flexContainer">
     <div class="bigFont">f</div
     ><div class="smallFont">g</div
-    ><div class="medFont">h</div
-    ><div class="bigFont">i</div>
-  </div>
-
-  <!-- Flex container with second line baseline-aligned
-       (shouldn't make a difference) -->
-  <div class="flexContainer">
-    <div class="smallFont">j</div
-    ><div class="bigFont">k</div
-    ><div class="bigFont" style="align-self: baseline">l</div
-    ><div class="medFont" style="align-self: baseline">m</div>
+    ><div class="bigFont">h</div
+    ><div class="medFont">i</div>
   </div>
   n
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002-ref.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002-ref.html
index f660966..15538f74 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002-ref.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002-ref.html
@@ -16,12 +16,11 @@
   <style>
     .flexContainer {
       display: inline-block;
-      /* Split testcase's 40px width into 20px of padding-left and 20px of
-         width, to set aside space for the testcase's (invisible) second line
-         (which is to the left of the first line, since this is wrap-reverse)
+      /* Split testcase's 40px width into 20px of padding-right and 20px of
+         width, to set aside space for the testcase's (invisible) second line.
       */
       width: 20px;
-      padding-left: 20px;
+      padding-right: 20px;
       height: 40px;
       background: lightblue;
     }
@@ -50,20 +49,15 @@
   a
   <!-- Flex containers with flex items that have a mix of baselines: -->
   <div class="flexContainer medFont">
-    <div class="medFont">b</div
-    ><br><div class="bigFont unaligned">c</div>
-  </div>
-
-  <div class="flexContainer bigFont">
-    <div class="bigFont">f</div
-    ><br><div class="smallFont unaligned">g</div>
+    <div class="bigFont">d</div
+    ><br><div class="medFont unaligned">e</div>
   </div>
 
   <!-- Flex container with second line baseline-aligned
        (shouldn't make a difference) -->
   <div class="flexContainer smallFont">
-    <div class="smallFont">j</div
-    ><br><div class="bigFont unaligned">k</div>
+    <div class="bigFont">l</div
+    ><br><div class="medFont unaligned">m</div>
   </div>
   n
 
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002.html
index 5bffc846..062d808 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-baseline-multi-line-vert-002.html
@@ -35,8 +35,8 @@
 
     /* We'll make the second flex line not paint anything, so that the
        reference case doesn't need to bother matching it. */
-    .flexContainer > *:nth-child(3),
-    .flexContainer > *:nth-child(4) {
+    .flexContainer > *:nth-child(1),
+    .flexContainer > *:nth-child(2) {
       visibility: hidden;
     }
 
@@ -64,13 +64,6 @@
     ><div class="medFont">e</div>
   </div>
 
-  <div class="flexContainer">
-    <div class="bigFont">f</div
-    ><div class="smallFont">g</div
-    ><div class="medFont">h</div
-    ><div class="bigFont">i</div>
-  </div>
-
   <!-- Flex container with second line baseline-aligned
        (shouldn't make a difference) -->
   <div class="flexContainer">
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-001.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-001.html
new file mode 100644
index 0000000..d004724
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-001.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines">
+<style>
+.target {
+  display: grid;
+  grid-auto-flow: column;
+  position: relative;
+  line-height: 0;
+  font-size: 20px;
+  inline-size: 200px;
+  margin-block: 10px;
+  padding: 10px;
+  border: solid 3px;
+}
+
+.inner {
+  display: flex;
+  border: solid 5px;
+  padding: 10px;
+}
+
+span {
+  display: inline-block;
+  width: 1em;
+  height: 1em;
+  outline: solid cyan 3px;
+  outline-offset: -3px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.target > *')">
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" style="flex-direction: row-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" style="flex-direction: row-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" style="flex-direction: column;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="flex-direction: column;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" style="flex-direction: column-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="flex-direction: column-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<!-- flex-wrap: wrap -->
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="25"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="70"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: row-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: row-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="25"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="50"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="35"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column-reverse; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column-reverse; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<!-- flex-wrap: wrap-reverse -->
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="70"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="40"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: row-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="60"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: row-reverse; inline-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="15"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column-reverse; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column-reverse; block-size: 50px;" data-offset-y="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-002.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-002.html
new file mode 100644
index 0000000..b6df9d7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-002.html
@@ -0,0 +1,262 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines">
+<style>
+.target {
+  display: grid;
+  grid-auto-flow: column;
+  position: relative;
+  line-height: 0;
+  font-size: 20px;
+  inline-size: 200px;
+  margin-inline: 10px;
+  padding: 10px;
+  border: solid 3px;
+  writing-mode: vertical-rl;
+}
+
+.inner {
+  display: flex;
+  border: solid 5px;
+  padding: 10px;
+}
+
+span {
+  display: inline-block;
+  width: 1em;
+  height: 1em;
+  outline: solid cyan 3px;
+  outline-offset: -3px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.target > *')">
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" style="flex-direction: row-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" style="flex-direction: row-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="50"><span></span></div>
+  <div class="inner" style="flex-direction: column;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" style="flex-direction: column;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" style="flex-direction: column-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="20"><span></span></div>
+  <div class="inner" style="flex-direction: column-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+  </div>
+</div>
+
+<!-- flex-wrap: wrap -->
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="70"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="33"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="65"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: row-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="45"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: row-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="55"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="38"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="50"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column-reverse; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="20"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap; flex-direction: column-reverse; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<!-- flex-wrap: wrap-reverse -->
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="75"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="63"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: row-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="35"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: row-reverse; inline-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="60"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="30"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="43"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column-reverse; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="25"><span></span></div>
+  <div class="inner" style="flex-wrap: wrap-reverse; flex-direction: column-reverse; block-size: 50px;" data-offset-x="10">
+    <div style="font-size: 20px;"><span></span></div>
+    <div style="font-size: 30px;"><span></span></div>
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 35px;"><span></span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-003.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-003.html
new file mode 100644
index 0000000..7fdc921
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-003.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines">
+<style>
+.target {
+  display: grid;
+  grid-auto-flow: column;
+  position: relative;
+  line-height: 0;
+  font-size: 20px;
+  inline-size: 200px;
+  margin-block: 10px;
+  padding: 10px;
+  border: solid 3px;
+}
+
+.inner {
+  display: flex;
+  border: solid 5px;
+  padding: 10px;
+  gap: 10px;
+}
+
+span {
+  display: inline-block;
+  width: 1em;
+  height: 1em;
+  outline: solid cyan 3px;
+  outline-offset: -3px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.target > *')">
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="45"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-y="55"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="115"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="115"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="115"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-y="115"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-y="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-004.html b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-004.html
new file mode 100644
index 0000000..447f008e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-align-baseline-flex-004.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines">
+<style>
+.target {
+  display: grid;
+  grid-auto-flow: column;
+  position: relative;
+  line-height: 0;
+  font-size: 20px;
+  inline-size: 200px;
+  margin-block: 10px;
+  padding: 10px;
+  border: solid 3px;
+  writing-mode: vertical-rl;
+}
+
+.inner {
+  display: flex;
+  border: solid 5px;
+  padding: 10px;
+  gap: 10px;
+}
+
+span {
+  display: inline-block;
+  width: 1em;
+  height: 1em;
+  outline: solid cyan 3px;
+  outline-offset: -3px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.target > *')">
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="110"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="110"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="105"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: first baseline;">
+  <div data-offset-x="105"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="45"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="45"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: first baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
+
+<div class="target" style="align-items: last baseline;">
+  <div data-offset-x="40"><span></span></div>
+  <div class="inner" style="inline-size: 140px; flex-wrap: wrap-reverse;" data-offset-x="10">
+    <div style="font-size: 10px;"><span></span></div>
+    <div style="font-size: 30px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 50px;"><span></span></div>
+    <div style="font-size: 60px;"><span></span></div>
+    <div style="font-size: 40px; margin-block: 10px; align-self: last baseline;"><span></span></div>
+    <div style="font-size: 20px;"><span></span></div>
+  </div>
+</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-layout-api/baseline/flex-baseline.https.html b/third_party/blink/web_tests/external/wpt/css/css-layout-api/baseline/flex-baseline.https.html
index 0b0e147..ce869bee 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-layout-api/baseline/flex-baseline.https.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-layout-api/baseline/flex-baseline.https.html
@@ -10,10 +10,10 @@
   padding: 0 10px;
   width: 80px;
   height: 100px;
+  align-items: baseline;
 }
 
 .child {
-  align-self: baseline;
   color: red;
 }
 
@@ -31,6 +31,7 @@
 
 <div class="parent">
   <div style="position: absolute; top: 50px; width: 50px; height: 25px; background: green;"></div>
+  <div></div>
   <div class="child">text</div>
 </div>
 
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webidl.idl b/third_party/blink/web_tests/external/wpt/interfaces/webidl.idl
index 43748c5..9993673 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/webidl.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/webidl.idl
@@ -9,7 +9,7 @@
          Float32Array or Float64Array or DataView) ArrayBufferView;
 
 typedef (ArrayBufferView or ArrayBuffer) BufferSource;
-[Exposed=(Window,Worker),
+[Exposed=*,
  Serializable]
 interface DOMException { // but see below note about ECMAScript binding
   constructor(optional DOMString message = "", optional DOMString name = "Error");
diff --git a/third_party/blink/web_tests/external/wpt/storage-access-api/requestStorageAccess.sub.window.js b/third_party/blink/web_tests/external/wpt/storage-access-api/requestStorageAccess.sub.window.js
index 308ad43..4600f52 100644
--- a/third_party/blink/web_tests/external/wpt/storage-access-api/requestStorageAccess.sub.window.js
+++ b/third_party/blink/web_tests/external/wpt/storage-access-api/requestStorageAccess.sub.window.js
@@ -48,12 +48,12 @@
     const description = "document.requestStorageAccess() call in a detached frame";
     // Can't use `promise_rejects_dom` here, since the error comes from the wrong global.
     return promise.then(t.unreached_func("Should have rejected: " + description), (e) => {
-      assert_equals(e.name, 'SecurityError', description);
+      assert_equals(e.name, 'InvalidStateError', description);
     });
   }, "[non-fully-active] document.requestStorageAccess() should not resolve when run in a detached frame");
 
   promise_test(t => {
-    return promise_rejects_dom(t, 'SecurityError', RunRequestStorageAccessViaDomParser(),
+    return promise_rejects_dom(t, 'InvalidStateError', RunRequestStorageAccessViaDomParser(),
      "document.requestStorageAccess() in a detached DOMParser result");
   }, "[non-fully-active] document.requestStorageAccess() should not resolve when run in a detached DOMParser document");
 
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/ellipse-hittest.html b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/ellipse-hittest.html
new file mode 100644
index 0000000..70b54e07
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/ellipse-hittest.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<title>elementFromPoint(...) on &lt;ellipse>s with continuous strokes</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/interact.html#hit-testing">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+#ell1:hover,
+#ell2:hover,
+#ell3:hover {
+    stroke: #9f9;
+}
+</style>
+<svg id="svg" width="450" height="300">
+  <rect id="border" x="0.5" y="0.5" width="449" height="299" stroke="#000" stroke-width="1" fill="none"/>
+
+  <ellipse id="ell1" cx="130" cy="30" rx="100" ry="15" stroke="#ccf" fill="none" stroke-width="20"/>
+  <ellipse pointer-events="none" cx="130" cy="30" rx="110" ry="25" stroke="gray" fill="none"/>
+  <ellipse pointer-events="none" cx="130" cy="30" rx="90" ry="5" stroke="gray" fill="none"/>
+
+  <ellipse id="ell2" cx="130" cy="180" rx="100" ry="100" stroke="#ccf" fill="none" stroke-width="30"/>
+  <ellipse pointer-events="none" cx="130" cy="180" rx="115" ry="115" stroke="gray" fill="none"/>
+  <ellipse pointer-events="none" cx="130" cy="180" rx="85" ry="85" stroke="gray" fill="none"/>
+
+  <ellipse id="ell3" cx="340" cy="155" rx="15" ry="100" stroke="#ccf" fill="none" stroke-width="20" transform="rotate(30 340 155)"/>
+  <ellipse pointer-events="none" cx="340" cy="155" rx="25" ry="110" stroke="gray" fill="none" transform="rotate(30 340 155)"/>
+  <ellipse pointer-events="none" cx="340" cy="155" rx="5" ry="90" stroke="gray" fill="none" transform="rotate(30 340 155)"/>
+</svg>
+<script>
+// Points are relative to the client rect of the <svg> root.
+const tests = [
+  { x: 27, y: 46, expectedElemId: "svg" },
+  { x: 98, y: 33, expectedElemId: "svg" },
+  { x: 202, y: 53, expectedElemId: "svg" },
+  { x: 98, y: 142, expectedElemId: "svg" },
+  { x: 130, y: 180, expectedElemId: "svg" },
+  { x: 91, y: 247, expectedElemId: "svg" },
+  { x: 27, y: 240, expectedElemId: "svg" },
+  { x: 336, y: 166, expectedElemId: "svg" },
+  { x: 337, y: 214, expectedElemId: "svg" },
+
+  { x: 31, y: 18, expectedElemId: "ell1" },
+  { x: 209, y: 31, expectedElemId: "ell1" },
+  { x: 132, y: 47, expectedElemId: "ell1" },
+  { x: 229, y: 43, expectedElemId: "ell1" },
+
+  { x: 245, y: 180, expectedElemId: "ell2" },
+  { x: 45, y: 180, expectedElemId: "ell2" },
+  { x: 130, y: 95, expectedElemId: "ell2" },
+  { x: 130, y: 295, expectedElemId: "ell2" },
+  { x: 212, y: 255, expectedElemId: "ell2" },
+
+  { x: 280, y: 235, expectedElemId: "ell3" },
+  { x: 301, y: 247, expectedElemId: "ell3" },
+  { x: 378, y: 88, expectedElemId: "ell3" },
+  { x: 335, y: 122, expectedElemId: "ell3" },
+  { x: 333, y: 190, expectedElemId: "ell3" },
+  { x: 377, y: 66, expectedElemId: "ell3" }
+];
+
+setup(() => {
+  const svg = document.getElementById("svg");
+  const svgBounds = svg.getBoundingClientRect();
+  window.svgOrigin = {
+    x: svgBounds.left << 0,
+    y: svgBounds.top << 0,
+  };
+});
+
+tests.forEach(testcase => {
+  test(t => {
+    const expectedElem = document.getElementById(testcase.expectedElemId);
+    const hitElem = document.elementFromPoint(svgOrigin.x + testcase.x, svgOrigin.y + testcase.y);
+    assert_equals(hitElem, expectedElem);
+  }, `${document.title}, element at (${testcase.x}, ${testcase.y})`);
+});
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/rect-hittest.html b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/rect-hittest.html
new file mode 100644
index 0000000..7eb70f8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/rect-hittest.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<title>elementFromPoint(...) on &lt;rect>s with simple strokes</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/interact.html#hit-testing">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+#rect1:hover,
+#rect2:hover,
+#rect3:hover,
+#rect4:hover,
+#rect5:hover,
+#rect6:hover {
+    stroke: #00f;
+}
+</style>
+<svg id="svg" width="420" height="300" version="1.1">
+  <rect id="border" x="0.5" y="0.5" width="419" height="299" stroke="#000" stroke-width="1" fill="none"/>
+
+  <rect id="rect1" x="70" y="30" width="100" height="80" stroke="#000" stroke-width="20" fill="none"/>
+  <rect id="rect2" x="40" y="150" width="50" height="120" stroke="#000" stroke-width="20" fill="none" transform="rotate(20 65 210)"/>
+  <rect id="rect3" x="140" y="200" width="150" height="70" stroke="#000" stroke-width="20" fill="none"/>
+  <rect id="rect4" x="220" y="50" width="60" height="10" stroke="#000" stroke-width="20" fill="none"/>
+  <rect id="rect5" x="230" y="100" width="10" height="60" stroke="#000" stroke-width="20" fill="none" transform="rotate(-45 235 130)"/>
+  <rect id="rect6" x="310" y="130" width="10" height="10" stroke="#000" stroke-width="20" fill="none"/>
+</svg>
+<script>
+// Points are relative to the client rect of the <svg> root.
+const tests = [
+  { x: 30, y: 12, expectedElemId: "svg" },
+  { x: 118, y: 10, expectedElemId: "svg" },
+  { x: 197, y: 12, expectedElemId: "svg" },
+  { x: 201, y: 28, expectedElemId: "svg" },
+  { x: 15, y: 70, expectedElemId: "svg" },
+  { x: 97, y: 52, expectedElemId: "svg" },
+  { x: 149, y: 49, expectedElemId: "svg" },
+  { x: 85, y: 82, expectedElemId: "svg" },
+  { x: 122, y: 98, expectedElemId: "svg" },
+  { x: 154, y: 75, expectedElemId: "svg" },
+  { x: 72, y: 130, expectedElemId: "svg" },
+  { x: 48, y: 145, expectedElemId: "svg" },
+  { x: 31, y: 279, expectedElemId: "svg" },
+  { x: 28, y: 201, expectedElemId: "svg" },
+  { x: 71, y: 179, expectedElemId: "svg" },
+  { x: 43, y: 244, expectedElemId: "svg" },
+  { x: 74, y: 219, expectedElemId: "svg" },
+  { x: 94, y: 261, expectedElemId: "svg" },
+  { x: 126, y: 231, expectedElemId: "svg" },
+  { x: 146, y: 185, expectedElemId: "svg" },
+  { x: 173, y: 216, expectedElemId: "svg" },
+  { x: 225, y: 258, expectedElemId: "svg" },
+  { x: 247, y: 284, expectedElemId: "svg" },
+  { x: 286, y: 174, expectedElemId: "svg" },
+  { x: 254, y: 120, expectedElemId: "svg" },
+  { x: 203, y: 96, expectedElemId: "svg" },
+  { x: 244, y: 163, expectedElemId: "svg" },
+  { x: 300, y: 37, expectedElemId: "svg" },
+  { x: 335, y: 136, expectedElemId: "svg" },
+
+  // Test all four outer corner points of #rect1
+  { x: 60, y: 20, expectedElemId: "rect1" },
+  { x: 180, y: 20, expectedElemId: "rect1" },
+  { x: 180, y: 120, expectedElemId: "rect1" },
+  { x: 60, y: 120, expectedElemId: "rect1" },
+  // Test all four interior corner points of #rect1
+  { x: 80, y: 40, expectedElemId: "rect1" },
+  { x: 160, y: 40, expectedElemId: "rect1" },
+  { x: 160, y: 100, expectedElemId: "rect1" },
+  { x: 80, y: 100, expectedElemId: "rect1" },
+
+  { x: 67, y: 56, expectedElemId: "rect1" },
+  { x: 146, y: 27, expectedElemId: "rect1" },
+  { x: 173, y: 111, expectedElemId: "rect1" },
+
+  { x: 28, y: 242, expectedElemId: "rect2" },
+  { x: 51, y: 182, expectedElemId: "rect2" },
+  { x: 89, y: 155, expectedElemId: "rect2" },
+
+  { x: 136, y: 198, expectedElemId: "rect3" },
+  { x: 177, y: 270, expectedElemId: "rect3" },
+  { x: 275, y: 197, expectedElemId: "rect3" },
+  { x: 297, y: 233, expectedElemId: "rect3" },
+
+  { x: 235, y: 47, expectedElemId: "rect4" },
+  { x: 272, y: 61, expectedElemId: "rect4" },
+  { x: 290, y: 70, expectedElemId: "rect4" },
+
+  { x: 233, y: 140, expectedElemId: "rect5" },
+
+  { x: 312, y: 128, expectedElemId: "rect6" },
+  { x: 330, y: 150, expectedElemId: "rect6" }
+];
+
+setup(() => {
+  const svg = document.getElementById("svg");
+  const svgBounds = svg.getBoundingClientRect();
+  window.svgOrigin = {
+    x: svgBounds.left << 0,
+    y: svgBounds.top << 0,
+  };
+});
+
+tests.forEach(testcase => {
+  test(t => {
+    const expectedElem = document.getElementById(testcase.expectedElemId);
+    const hitElem = document.elementFromPoint(svgOrigin.x + testcase.x, svgOrigin.y + testcase.y);
+    assert_equals(hitElem, expectedElem);
+  }, `${document.title}, element at (${testcase.x}, ${testcase.y})`);
+});
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-pointer-events-bbox.html b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-pointer-events-bbox.html
new file mode 100644
index 0000000..8db9149c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-pointer-events-bbox.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html>
+<title>pointer-events: bounding-box</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/interact.html#PointerEventsProp">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style type="text/css">
+  #svgRoot {
+    margin: 0px;
+    padding: 0px;
+    position: absolute;
+    top: 0px;
+    left: 0px;
+    font: 10px/1 Ahem;
+  }
+
+  .test { fill: blue; pointer-events: bounding-box; }
+  .test:hover { fill: green; visibility: visible; }
+</style>
+<svg id="svgRoot" width="800px" height="360px" viewBox="0 0 800 360" opacity="0">
+  <g class="test" id="test1" transform="rotate(15)">
+    <circle id="circle1" cx="50" cy="50" r="10"/>
+    <circle cx="150" cy="150" r="10"/>
+  </g>
+  <circle class="test" id="circle2" cx="400" cy="150" r="50" visibility="hidden"/>
+  <text class="test" id="text1" x="100" y="20">Text should change color when mouse is within <tspan id="tspan1" dy="3em">the bbox.</tspan></text>
+  <text class="test" id="text2" x="150" y="100" transform="rotate(15)">Text should change color when mouse is within <tspan id="tspan2" dy="3em">the bbox.</tspan></text>
+  <text class="test" id="text3" x="200" y="280" transform="rotate(5)">Text should end here.<tspan id="tspan3" dy="2em" display="none">invisible</tspan></text>
+  <image class="test" id="image1" xlink:href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 30'><rect x='10' y='10' width='20' height='10' fill='blue'/></svg>"
+         width="50" height="30" visibility="hidden" transform="translate(0,200)"/>
+</svg>
+<script>
+const group1 = document.getElementById("test1");
+const circle1 = document.getElementById("circle1");
+const circle2 = document.getElementById("circle2");
+const text1 = document.getElementById("text1");
+const tspan1 = document.getElementById("tspan1");
+const text2 = document.getElementById("text2");
+const tspan2 = document.getElementById("tspan2");
+const text3 = document.getElementById("text3");
+const tspan3 = document.getElementById("tspan3");
+const image1 = document.getElementById("image1");
+
+const pointsOnCircle1 = [
+  {x: 36, y: 60},
+  {x: 42, y: 67}
+];
+
+const pointsNotOnCircle1 = [
+  {x: 50, y: 50},
+  {x: 50, y: 55}
+];
+
+const pointsInsideBBoxOfCircle1 = [
+  {x: 100, y: 100},
+  {x: 137, y: 84},
+  {x: 51, y: 156},
+  {x:70, y:120}
+];
+
+const pointsOnCircle2 = [
+  {x: 400, y: 150},
+  {x: 432, y: 182},
+  {x: 361, y: 122}
+];
+
+const pointsInsideBBoxOfCircle2 = [
+  {x: 438, y: 103},
+  {x: 450, y: 200}
+];
+
+const pointsOnText1 = [
+  {x: 134, y: 16}
+];
+
+const pointsOnTspan1 = [
+  {x: 579, y: 46}
+];
+
+const pointsNotOnText1 = [
+  {x: 395, y: 73},
+  {x: 74, y: 5}
+];
+
+const pointsInsideBBoxOfText1 = [
+  {x: 435, y: 32},
+  {x: 115, y: 46}
+];
+
+const pointsOnText2 = [
+  {x: 178, y: 146}
+];
+
+const pointsOnTspan2 = [
+  {x: 568, y: 283}
+];
+
+const pointsNotOnText2 = [
+  {x: 319, y: 161},
+  {x: 179, y: 131}
+];
+
+const pointsInsideBBoxOfText2 = [
+  {x: 295, y: 214},
+  {x: 444, y: 222}
+];
+
+const pointsOnText3 = [
+  {x: 198, y: 291},
+  {x: 286, y: 301}
+];
+
+const pointsNotOnText3 = [
+  {x: 302, y: 337},
+  {x: 348, y: 335}
+];
+
+const pointsOnImage1 = [
+  {x: 19, y: 215},
+  {x: 45, y: 225}
+];
+
+function hitTest(point, element, shouldContain, optionalLabel) {
+  const label = optionalLabel || element.id;
+  test(() => {
+    const contain = element.contains(document.elementFromPoint(point.x, point.y));
+    if (shouldContain)
+      assert_true(contain);
+    else
+      assert_false(contain);
+  }, `${label} ${shouldContain ? 'contains' : 'does not contain'} point at (${point.x}, ${point.y})`);
+}
+
+pointsOnCircle1.forEach(point => hitTest(point, circle1, true));
+pointsNotOnCircle1.forEach(point => hitTest(point, circle1, false));
+pointsInsideBBoxOfCircle1.forEach(point => hitTest(point, group1, true, 'group1'));
+
+pointsOnCircle2.forEach(point => hitTest(point, circle2, true));
+pointsInsideBBoxOfCircle2.forEach(point => hitTest(point, circle2, true, 'bbox of circle2'));
+
+pointsOnText1.forEach(point => hitTest(point, text1, true));
+pointsOnTspan1.forEach(point => hitTest(point, tspan1, true));
+pointsNotOnText1.forEach(point => hitTest(point, text1, false));
+pointsInsideBBoxOfText1.forEach(point => hitTest(point, text1, true, 'bbox of text1'));
+
+pointsOnText2.forEach(point => hitTest(point, text2, true));
+pointsOnTspan2.forEach(point => hitTest(point, tspan2, true));
+pointsNotOnText2.forEach(point => hitTest(point, text2, false));
+pointsInsideBBoxOfText2.forEach(point => hitTest(point, text2, true, 'bbox of text2'));
+
+pointsOnText3.forEach(point => hitTest(point, text3, true));
+pointsNotOnText3.forEach(point => hitTest(point, text3, false));
+
+pointsOnImage1.forEach(point => hitTest(point, image1, true));
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-small-big-path.html b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-small-big-path.html
new file mode 100644
index 0000000..ba0e403f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/interact/scripted/svg-small-big-path.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<title>Hit-test on a path whose x/y ranges have different magnitude</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/interact.html#hit-testing">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  svg {
+    margin: 0px;
+    padding: 0px;
+    position: absolute;
+    top: 0px;
+    left: 0px;
+  }
+</style>
+<svg>
+  <svg x="-250000" width="500000" height="500">
+    <path id="path" d="M 250005 104 l 19 0 l 3 3 l -3 3 l -19 0 z"/>
+  </svg>
+</svg>
+<script>
+const pointsInPath = [
+  {x: 5, y: 104},
+  {x: 5, y: 107},
+  {x: 5, y: 110}
+];
+
+const pointsNotInPath = [
+  {x: 5, y: 103},
+  {x: 5, y: 111}
+];
+
+setup(() => {
+  window.pathElement = document.getElementById("path");
+});
+
+pointsInPath.forEach(point => {
+  test(t => {
+    assert_equals(pathElement, document.elementFromPoint(point.x, point.y));
+  }, `${document.title}, path contains point at (${point.x}, ${point.y})`);
+});
+
+pointsNotInPath.forEach(point => {
+  test(t => {
+    assert_not_equals(pathElement, document.elementFromPoint(point.x, point.y));
+  }, `${document.title}, path does not contain point at (${point.x}, ${point.y})`);
+});
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/webidl/idlharness-shadowrealm.window-expected.txt b/third_party/blink/web_tests/external/wpt/webidl/idlharness-shadowrealm.window-expected.txt
new file mode 100644
index 0000000..2db45e1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webidl/idlharness-shadowrealm.window-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+Harness Error. harness_status.status = 1 , harness_status.message = ReferenceError: ShadowRealm is not defined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/webidl/idlharness-shadowrealm.window.js b/third_party/blink/web_tests/external/wpt/webidl/idlharness-shadowrealm.window.js
new file mode 100644
index 0000000..ab1ca9a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webidl/idlharness-shadowrealm.window.js
@@ -0,0 +1,2 @@
+// META: script=/resources/idlharness-shadowrealm.js
+idl_test_shadowrealm(["webidl"], []);
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-css-flex-gap-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-css-flex-gap-expected.txt
index 8a7e71b3..9505657 100644
--- a/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-css-flex-gap-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-css-flex-gap-expected.txt
@@ -369,16 +369,16 @@
           {
             "itemBorder": [
               "M",
-              400,
+              180,
               100,
               "L",
-              500,
+              280,
               100,
               "L",
-              500,
+              280,
               200,
               "L",
-              400,
+              180,
               200,
               "Z"
             ],
@@ -405,16 +405,16 @@
           {
             "itemBorder": [
               "M",
-              180,
+              400,
               100,
               "L",
-              280,
+              500,
               100,
               "L",
-              280,
+              500,
               200,
               "L",
-              180,
+              400,
               200,
               "Z"
             ],
@@ -425,16 +425,16 @@
           {
             "itemBorder": [
               "M",
-              400,
+              290,
               220,
               "L",
-              500,
+              390,
               220,
               "L",
-              500,
+              390,
               320,
               "L",
-              400,
+              290,
               320,
               "Z"
             ],
@@ -443,16 +443,16 @@
           {
             "itemBorder": [
               "M",
-              290,
+              400,
               220,
               "L",
-              390,
+              500,
               220,
               "L",
-              390,
+              500,
               320,
               "L",
-              290,
+              400,
               320,
               "Z"
             ],
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-css-flex-reverse-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-css-flex-reverse-expected.txt
index 0dacdce..5f877bae 100644
--- a/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-css-flex-reverse-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/elements/highlight/highlight-css-flex-reverse-expected.txt
@@ -118,16 +118,16 @@
           {
             "itemBorder": [
               "M",
-              78,
+              18,
               8,
               "L",
-              98,
+              38,
               8,
               "L",
-              98,
+              38,
               28,
               "L",
-              78,
+              18,
               28,
               "Z"
             ],
@@ -154,16 +154,16 @@
           {
             "itemBorder": [
               "M",
-              18,
+              78,
               8,
               "L",
-              38,
+              98,
               8,
               "L",
-              38,
+              98,
               28,
               "L",
-              18,
+              78,
               28,
               "Z"
             ],
diff --git a/third_party/blink/web_tests/platform/linux/css3/flexbox/flexbox-baseline-expected.png b/third_party/blink/web_tests/platform/linux/css3/flexbox/flexbox-baseline-expected.png
deleted file mode 100644
index 7bb27e8..0000000
--- a/third_party/blink/web_tests/platform/linux/css3/flexbox/flexbox-baseline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/css3/flexbox/flexbox-baseline-expected.png b/third_party/blink/web_tests/platform/mac/css3/flexbox/flexbox-baseline-expected.png
deleted file mode 100644
index 75f3f11..0000000
--- a/third_party/blink/web_tests/platform/mac/css3/flexbox/flexbox-baseline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/css3/flexbox/flexbox-baseline-expected.png b/third_party/blink/web_tests/platform/win/css3/flexbox/flexbox-baseline-expected.png
deleted file mode 100644
index ff3917f5..0000000
--- a/third_party/blink/web_tests/platform/win/css3/flexbox/flexbox-baseline-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/printing/multi-page-background-expected.png b/third_party/blink/web_tests/printing/multi-page-background-expected.png
index c11fdbe..03d6a5c 100644
--- a/third_party/blink/web_tests/printing/multi-page-background-expected.png
+++ b/third_party/blink/web_tests/printing/multi-page-background-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/hittest/ellipse-hittest-expected.txt b/third_party/blink/web_tests/svg/hittest/ellipse-hittest-expected.txt
deleted file mode 100644
index 8d3f864..0000000
--- a/third_party/blink/web_tests/svg/hittest/ellipse-hittest-expected.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-This tests hit testing on ellipses with continuous strokes. If this test passes, you will see "PASS" below.
-
-PASS
-
-(27, 46)
-(98, 33)
-(202, 53)
-(98, 142)
-(130, 180)
-(91, 247)
-(27, 240)
-(336, 166)
-(337, 214)
-(31, 18)
-(209, 31)
-(132, 47)
-(229, 43)
-(245, 180)
-(45, 180)
-(130, 95)
-(130, 295)
-(212, 255)
-(280, 235)
-(301, 247)
-(378, 88)
-(335, 122)
-(333, 190)
-(377, 66)
diff --git a/third_party/blink/web_tests/svg/hittest/ellipse-hittest.html b/third_party/blink/web_tests/svg/hittest/ellipse-hittest.html
deleted file mode 100644
index 46474f2e..0000000
--- a/third_party/blink/web_tests/svg/hittest/ellipse-hittest.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html>
-This tests hit testing on ellipses with continuous strokes. If this test passes, you will see "PASS" below.
-<p id="result">Running test...</p>
-<style>
-#ell1:hover,
-#ell2:hover,
-#ell3:hover {
-    stroke: #9f9;
-}
-</style>
-<svg id="svg" width="450" height="300" version="1.1">
-    <rect id="border" x="0.5" y="0.5" width="449" height="299" stroke="#000" stroke-width="1" fill="none"/>
-
-    <ellipse id="ell1" cx="130" cy="30" rx="100" ry="15" stroke="#ccf" fill="none" stroke-width="20"/>
-    <ellipse pointer-events="none" cx="130" cy="30" rx="110" ry="25" stroke="gray" fill="none"/>
-    <ellipse pointer-events="none" cx="130" cy="30" rx="90" ry="5" stroke="gray" fill="none"/>
-
-    <ellipse id="ell2" cx="130" cy="180" rx="100" ry="100" stroke="#ccf" fill="none" stroke-width="30"/>
-    <ellipse pointer-events="none" cx="130" cy="180" rx="115" ry="115" stroke="gray" fill="none"/>
-    <ellipse pointer-events="none" cx="130" cy="180" rx="85" ry="85" stroke="gray" fill="none"/>
-
-    <ellipse id="ell3" cx="340" cy="155" rx="15" ry="100" stroke="#ccf" fill="none" stroke-width="20" transform="rotate(30 340 155)"/>
-    <ellipse pointer-events="none" cx="340" cy="155" rx="25" ry="110" stroke="gray" fill="none" transform="rotate(30 340 155)"/>
-    <ellipse pointer-events="none" cx="340" cy="155" rx="5" ry="90" stroke="gray" fill="none" transform="rotate(30 340 155)"/>
-</svg>
-<script type="text/javascript">
-if (window.testRunner) {
-    testRunner.dumpAsText();
-    testRunner.waitUntilDone();
-}
-
-var svg = document.getElementById("svg");
-window.onload = function () {
-    var tests = [
-        { x: 27, y: 46, expectedElemId: "svg" },
-        { x: 98, y: 33, expectedElemId: "svg" },
-        { x: 202, y: 53, expectedElemId: "svg" },
-        { x: 98, y: 142, expectedElemId: "svg" },
-        { x: 130, y: 180, expectedElemId: "svg" },
-        { x: 91, y: 247, expectedElemId: "svg" },
-        { x: 27, y: 240, expectedElemId: "svg" },
-        { x: 336, y: 166, expectedElemId: "svg" },
-        { x: 337, y: 214, expectedElemId: "svg" },
-
-        { x: 31, y: 18, expectedElemId: "ell1" },
-        { x: 209, y: 31, expectedElemId: "ell1" },
-        { x: 132, y: 47, expectedElemId: "ell1" },
-        { x: 229, y: 43, expectedElemId: "ell1" },
-
-        { x: 245, y: 180, expectedElemId: "ell2" },
-        { x: 45, y: 180, expectedElemId: "ell2" },
-        { x: 130, y: 95, expectedElemId: "ell2" },
-        { x: 130, y: 295, expectedElemId: "ell2" },
-        { x: 212, y: 255, expectedElemId: "ell2" },
-
-        { x: 280, y: 235, expectedElemId: "ell3" },
-        { x: 301, y: 247, expectedElemId: "ell3" },
-        { x: 378, y: 88, expectedElemId: "ell3" },
-        { x: 335, y: 122, expectedElemId: "ell3" },
-        { x: 333, y: 190, expectedElemId: "ell3" },
-        { x: 377, y: 66, expectedElemId: "ell3" }
-    ];
-
-    var bcr = svg.getBoundingClientRect(),
-        x0 = bcr.left << 0,
-        y0 = bcr.top << 0;
-
-    for (var i = 0; i < tests.length; ++i) {
-        var test = tests[i],
-            elem = document.elementFromPoint(x0 + test.x, y0 + test.y),
-            expectedElem = document.getElementById(test.expectedElemId),
-            success;
-        if (elem !== expectedElem) {
-            success = false;
-            result.textContent = "FAIL - unexpected element at (" + test.x + ", " + test.y + ")";
-        } else {
-            success = true;
-        }
-
-        // Draw a dot and a label at the test point (helps with identification).
-        markPoint(test.x, test.y, success);
-    }
-
-    if (result.textContent == "Running test...")
-        result.textContent = "PASS";
-
-    if (window.testRunner)
-        testRunner.notifyDone();
-};
-
-function markPoint(testX, testY, success) {
-    var dot = document.createElementNS("http://www.w3.org/2000/svg", "circle");
-    dot.setAttribute("pointer-events", "none");
-    dot.setAttribute("cx", testX);
-    dot.setAttribute("cy", testY);
-    dot.setAttribute("r", "2");
-    if (success)
-        dot.setAttribute("fill", "#0c0");
-    else
-        dot.setAttribute("fill", "red");
-    svg.appendChild(dot);
-    var label = document.createElementNS("http://www.w3.org/2000/svg", "text");
-    label.setAttribute("pointer-events", "none");
-    label.setAttribute("x", testX + 4);
-    label.setAttribute("y", testY);
-    label.textContent = "(" + testX + ", " + testY + ")";
-    if (success)
-        label.setAttribute("fill", "#0c0");
-    else
-        label.setAttribute("fill", "red");
-    svg.appendChild(label);
-}
-</script>
diff --git a/third_party/blink/web_tests/svg/hittest/rect-hittest-expected.txt b/third_party/blink/web_tests/svg/hittest/rect-hittest-expected.txt
deleted file mode 100644
index ee2de41..0000000
--- a/third_party/blink/web_tests/svg/hittest/rect-hittest-expected.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-This tests hit testing on rects with simple strokes, exercising optimized code for hit testing the rects' strokes. If this test passes, you will see "PASS" below.
-
-PASS
-
-(30, 12)
-(118, 10)
-(197, 12)
-(201, 28)
-(15, 70)
-(97, 52)
-(149, 49)
-(85, 82)
-(122, 98)
-(154, 75)
-(72, 130)
-(48, 145)
-(31, 279)
-(28, 201)
-(71, 179)
-(43, 244)
-(74, 219)
-(94, 261)
-(126, 231)
-(146, 185)
-(173, 216)
-(225, 258)
-(247, 284)
-(286, 174)
-(254, 120)
-(203, 96)
-(244, 163)
-(300, 37)
-(335, 136)
-(60, 20)
-(180, 20)
-(180, 120)
-(60, 120)
-(80, 40)
-(160, 40)
-(160, 100)
-(80, 100)
-(67, 56)
-(146, 27)
-(173, 111)
-(28, 242)
-(51, 182)
-(89, 155)
-(136, 198)
-(177, 270)
-(275, 197)
-(297, 233)
-(235, 47)
-(272, 61)
-(290, 70)
-(233, 140)
-(312, 128)
-(330, 150)
diff --git a/third_party/blink/web_tests/svg/hittest/rect-hittest.html b/third_party/blink/web_tests/svg/hittest/rect-hittest.html
deleted file mode 100644
index 5022e1f..0000000
--- a/third_party/blink/web_tests/svg/hittest/rect-hittest.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html>
-This tests hit testing on rects with simple strokes, exercising optimized code for hit testing the rects' strokes. If this test passes, you will see "PASS" below.
-<p id="result">Running test...</p>
-<style>
-#rect1:hover,
-#rect2:hover,
-#rect3:hover,
-#rect4:hover,
-#rect5:hover,
-#rect6:hover {
-    stroke: #00f;
-}
-</style>
-<svg id="svg" width="420" height="300" version="1.1">
-    <rect id="border" x="0.5" y="0.5" width="419" height="299" stroke="#000" stroke-width="1" fill="none"/>
-
-    <rect id="rect1" x="70" y="30" width="100" height="80" stroke="#000" stroke-width="20" fill="none"/>
-    <rect id="rect2" x="40" y="150" width="50" height="120" stroke="#000" stroke-width="20" fill="none" transform="rotate(20 65 210)"/>
-    <rect id="rect3" x="140" y="200" width="150" height="70" stroke="#000" stroke-width="20" fill="none"/>
-    <rect id="rect4" x="220" y="50" width="60" height="10" stroke="#000" stroke-width="20" fill="none"/>
-    <rect id="rect5" x="230" y="100" width="10" height="60" stroke="#000" stroke-width="20" fill="none" transform="rotate(-45 235 130)"/>
-    <rect id="rect6" x="310" y="130" width="10" height="10" stroke="#000" stroke-width="20" fill="none"/>
-</svg>
-<script type="text/javascript">
-if (window.testRunner) {
-    testRunner.dumpAsText();
-    testRunner.waitUntilDone();
-}
-
-var svg = document.getElementById("svg");
-window.onload = function () {
-    var tests = [
-        { x: 30, y: 12, expectedElemId: "svg" },
-        { x: 118, y: 10, expectedElemId: "svg" },
-        { x: 197, y: 12, expectedElemId: "svg" },
-        { x: 201, y: 28, expectedElemId: "svg" },
-        { x: 15, y: 70, expectedElemId: "svg" },
-        { x: 97, y: 52, expectedElemId: "svg" },
-        { x: 149, y: 49, expectedElemId: "svg" },
-        { x: 85, y: 82, expectedElemId: "svg" },
-        { x: 122, y: 98, expectedElemId: "svg" },
-        { x: 154, y: 75, expectedElemId: "svg" },
-        { x: 72, y: 130, expectedElemId: "svg" },
-        { x: 48, y: 145, expectedElemId: "svg" },
-        { x: 31, y: 279, expectedElemId: "svg" },
-        { x: 28, y: 201, expectedElemId: "svg" },
-        { x: 71, y: 179, expectedElemId: "svg" },
-        { x: 43, y: 244, expectedElemId: "svg" },
-        { x: 74, y: 219, expectedElemId: "svg" },
-        { x: 94, y: 261, expectedElemId: "svg" },
-        { x: 126, y: 231, expectedElemId: "svg" },
-        { x: 146, y: 185, expectedElemId: "svg" },
-        { x: 173, y: 216, expectedElemId: "svg" },
-        { x: 225, y: 258, expectedElemId: "svg" },
-        { x: 247, y: 284, expectedElemId: "svg" },
-        { x: 286, y: 174, expectedElemId: "svg" },
-        { x: 254, y: 120, expectedElemId: "svg" },
-        { x: 203, y: 96, expectedElemId: "svg" },
-        { x: 244, y: 163, expectedElemId: "svg" },
-        { x: 300, y: 37, expectedElemId: "svg" },
-        { x: 335, y: 136, expectedElemId: "svg" },
-
-        // Test all four outer corner points of #rect1
-        { x: 60, y: 20, expectedElemId: "rect1" },
-        { x: 180, y: 20, expectedElemId: "rect1" },
-        { x: 180, y: 120, expectedElemId: "rect1" },
-        { x: 60, y: 120, expectedElemId: "rect1" },
-        // Test all four interior corner points of #rect1
-        { x: 80, y: 40, expectedElemId: "rect1" },
-        { x: 160, y: 40, expectedElemId: "rect1" },
-        { x: 160, y: 100, expectedElemId: "rect1" },
-        { x: 80, y: 100, expectedElemId: "rect1" },
-
-        { x: 67, y: 56, expectedElemId: "rect1" },
-        { x: 146, y: 27, expectedElemId: "rect1" },
-        { x: 173, y: 111, expectedElemId: "rect1" },
-
-        { x: 28, y: 242, expectedElemId: "rect2" },
-        { x: 51, y: 182, expectedElemId: "rect2" },
-        { x: 89, y: 155, expectedElemId: "rect2" },
-
-        { x: 136, y: 198, expectedElemId: "rect3" },
-        { x: 177, y: 270, expectedElemId: "rect3" },
-        { x: 275, y: 197, expectedElemId: "rect3" },
-        { x: 297, y: 233, expectedElemId: "rect3" },
-
-        { x: 235, y: 47, expectedElemId: "rect4" },
-        { x: 272, y: 61, expectedElemId: "rect4" },
-        { x: 290, y: 70, expectedElemId: "rect4" },
-
-        { x: 233, y: 140, expectedElemId: "rect5" },
-
-        { x: 312, y: 128, expectedElemId: "rect6" },
-        { x: 330, y: 150, expectedElemId: "rect6" }
-    ];
-
-    var bcr = svg.getBoundingClientRect(),
-        x0 = bcr.left << 0,
-        y0 = bcr.top << 0;
-
-    for (var i = 0; i < tests.length; ++i) {
-        var test = tests[i],
-            elem = document.elementFromPoint(x0 + test.x, y0 + test.y),
-            expectedElem = document.getElementById(test.expectedElemId),
-            success;
-        if (elem !== expectedElem) {
-            success = false;
-            result.textContent = "FAIL - unexpected element at (" + test.x + ", " + test.y + ")";
-        } else {
-            success = true;
-        }
-
-        // Draw a dot and a label at the test point (helps with identification).
-        markPoint(test.x, test.y, success);
-    }
-
-    if (result.textContent == "Running test...")
-        result.textContent = "PASS";
-
-    if (window.testRunner)
-        testRunner.notifyDone();
-};
-
-function markPoint(testX, testY, success) {
-    var dot = document.createElementNS("http://www.w3.org/2000/svg", "circle");
-    dot.setAttribute("pointer-events", "none");
-    dot.setAttribute("cx", testX);
-    dot.setAttribute("cy", testY);
-    dot.setAttribute("r", "2");
-    if (success)
-        dot.setAttribute("fill", "#0c0");
-    else
-        dot.setAttribute("fill", "red");
-    svg.appendChild(dot);
-    var label = document.createElementNS("http://www.w3.org/2000/svg", "text");
-    label.setAttribute("pointer-events", "none");
-    label.setAttribute("x", testX + 4);
-    label.setAttribute("y", testY);
-    label.textContent = "(" + testX + ", " + testY + ")";
-    if (success)
-        label.setAttribute("fill", "#0c0");
-    else
-        label.setAttribute("fill", "red");
-    svg.appendChild(label);
-}
-</script>
diff --git a/third_party/blink/web_tests/svg/hittest/svg-pointer-events-bbox.html b/third_party/blink/web_tests/svg/hittest/svg-pointer-events-bbox.html
deleted file mode 100644
index 5fe492d..0000000
--- a/third_party/blink/web_tests/svg/hittest/svg-pointer-events-bbox.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-<script src="../../resources/ahem.js"></script>
-<script src="../../resources/testharness.js"></script>
-<script src="../../resources/testharnessreport.js"></script>
-        <style type="text/css">
-            #svgRoot {
-                margin: 0px;
-                padding: 0px;
-                position: absolute;
-                top: 0px;
-                left: 0px;
-                font-family: Ahem;
-                font-size: 10px;
-            }
-
-            .test { fill: blue; pointer-events: bounding-box; }
-            .test:hover { fill: green; visibility: visible; }
-        </style>
-        <title>Tests for pointer-events=bounding-box - hit testing.</title>
-    </head>
-    <body>
-        <pre id="console"></pre>
-
-        <svg id="svgRoot" width="800px" height="360px"
-            viewBox="0 0 800 360" xmlns="http://www.w3.org/2000/svg"
-            xmlns:xlink="http://www.w3.org/1999/xlink" opacity="0">
-            <g class="test" id="test1" transform="rotate(15)">
-                <circle id="circle1" cx="50" cy="50" r="10"/>
-                <circle cx="150" cy="150" r="10"/>
-            </g>
-            <circle class="test" id="circle2" cx="400" cy="150" r="50" visibility="hidden"/>
-            <text class="test" id="text1" x="100" y="20">Text should change color when mouse is within <tspan id="tspan1" dy="3em">the bbox.</tspan></text>
-            <text class="test" id="text2" x="150" y="100" transform="rotate(15)">Text should change color when mouse is within <tspan id="tspan2" dy="3em">the bbox.</tspan></text>
-            <text class="test" id="text3" x="200" y="280" transform="rotate(5)">Text should end here.<tspan id="tspan3" dy="2em" display="none">invisible</tspan></text>
-            <image class="test" id="image1" xlink:href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 30'><rect x='10' y='10' width='20' height='10' fill='blue'/></svg>" 
-                   width="50" height="30" visibility="hidden" transform="translate(0,200)"/>
-        </svg>
-
-        <script type="text/javascript">
-            document.body.onclick = function(evt) {
-                document.getElementById("console").innerHTML = "mouse at " + evt.x + "," + evt.y;
-            };
-
-            var group1 = document.getElementById("test1");
-            var circle1 = document.getElementById("circle1");
-            var circle2 = document.getElementById("circle2");
-            var text1 = document.getElementById("text1");
-            var tspan1 = document.getElementById("tspan1");
-            var text2 = document.getElementById("text2");
-            var tspan2 = document.getElementById("tspan2");
-            var text3 = document.getElementById("text3");
-            var tspan3 = document.getElementById("tspan3");
-            var image1 = document.getElementById("image1");
-
-            var pointsOnCircle1 = [
-                {x: 36, y: 60},
-                {x: 42, y: 67}
-            ];
-
-            var pointsNotOnCircle1 = [
-                {x: 50, y: 50},
-                {x: 50, y: 55}
-            ];
-
-            var pointsInsideBBoxOfCircle1 = [
-                {x: 100, y: 100},
-                {x: 137, y: 84},
-                {x: 51, y: 156},
-                {x:70, y:120}
-            ];
-
-            var pointsOnCircle2 = [
-                {x: 400, y: 150},
-                {x: 432, y: 182},
-                {x: 361, y: 122}
-            ];
-
-            var pointsInsideBBoxOfCircle2 = [
-                {x: 438, y: 103},
-                {x: 450, y: 200}
-            ];
-
-            var pointsOnText1 = [
-                {x: 134, y: 16}
-            ];
-
-            var pointsOnTspan1 = [
-                {x: 579, y: 46}
-            ];
-
-            var pointsNotOnText1 = [
-                {x: 395, y: 73},
-                {x: 74, y: 5}
-            ];
-
-            var pointsInsideBBoxOfText1 = [
-                {x: 435, y: 32},
-                {x: 115, y: 46}
-            ];
-
-            var pointsOnText2 = [
-                {x: 178, y: 146}
-            ];
-
-            var pointsOnTspan2 = [
-                {x: 568, y: 283}
-            ];
-
-            var pointsNotOnText2 = [
-                {x: 319, y: 161},
-                {x: 179, y: 131}
-            ];
-
-            var pointsInsideBBoxOfText2 = [
-                {x: 295, y: 214},
-                {x: 444, y: 222}
-            ];
-
-            var pointsOnText3 = [
-                {x: 198, y: 291},
-                {x: 286, y: 301}
-            ];
-
-            var pointsNotOnText3 = [
-                {x: 302, y: 337},
-                {x: 348, y: 335}
-            ];
-
-            var pointsOnImage1 = [
-                {x: 19, y: 215},
-                {x: 45, y: 225}
-            ];
-
-            function hitTest(point, element, shouldContain, optionalLabel) {
-              const label = optionalLabel || element.id;
-              test(() => {
-                let contain = element.contains(document.elementFromPoint(point.x, point.y));
-                if (shouldContain)
-                  assert_true(contain);
-                else
-                  assert_false(contain);
-                }, `${label} ${shouldContain ? 'contains' : 'does not contain'} point at (${point.x}, ${point.y})`);
-            }
-
-            pointsOnCircle1.forEach(point => hitTest(point, circle1, true));
-            pointsNotOnCircle1.forEach(point => hitTest(point, circle1, false));
-            pointsInsideBBoxOfCircle1.forEach(point => hitTest(point, group1, true, 'group1'));
-
-            pointsOnCircle2.forEach(point => hitTest(point, circle2, true));
-            pointsInsideBBoxOfCircle2.forEach(point => hitTest(point, circle2, true, 'bbox of circle2'));
-
-            pointsOnText1.forEach(point => hitTest(point, text1, true));
-            pointsOnTspan1.forEach(point => hitTest(point, tspan1, true));
-            pointsNotOnText1.forEach(point => hitTest(point, text1, false));
-            pointsInsideBBoxOfText1.forEach(point => hitTest(point, text1, true, 'bbox of text1'));
-
-            pointsOnText2.forEach(point => hitTest(point, text2, true));
-            pointsOnTspan2.forEach(point => hitTest(point, tspan2, true));
-            pointsNotOnText2.forEach(point => hitTest(point, text2, false));
-            pointsInsideBBoxOfText2.forEach(point => hitTest(point, text2, true, 'bbox of text2'));
-
-            pointsOnText3.forEach(point => hitTest(point, text3, true));
-            pointsNotOnText3.forEach(point => hitTest(point, text3, false));
-
-            pointsOnImage1.forEach(point => hitTest(point, image1, true));
-        </script>
-    </body>
-</html>
diff --git a/third_party/blink/web_tests/svg/hittest/svg-small-big-path-expected.txt b/third_party/blink/web_tests/svg/hittest/svg-small-big-path-expected.txt
deleted file mode 100644
index 21bf174..0000000
--- a/third_party/blink/web_tests/svg/hittest/svg-small-big-path-expected.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Test that hit-test works for a path whose x/y ranges have different magnitude.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-PASS path contains point at (5, 104)
-PASS path contains point at (5, 107)
-PASS path contains point at (5, 110)
-PASS path does not contain point at (5, 103)
-PASS path does not contain point at (5, 111)
-
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/third_party/blink/web_tests/svg/hittest/svg-small-big-path.html b/third_party/blink/web_tests/svg/hittest/svg-small-big-path.html
deleted file mode 100644
index 48e63563..0000000
--- a/third_party/blink/web_tests/svg/hittest/svg-small-big-path.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<style>
-  svg {
-    margin: 0px;
-    padding: 0px;
-    position: absolute;
-    top: 0px;
-    left: 0px;
-  }
-</style>
-<body>
-  <svg x="0" y="0">
-    <svg x="-250000" width="500000" height="500">
-      <path id="path" d="M 250005 104 l 19 0 l 3 3 l -3 3 l -19 0 z"></path>
-    </svg>
-  </svg>
-
-<script src="../../resources/js-test.js"></script>
-<script>
-    description("Test that hit-test works for a path whose x/y ranges have different magnitude.");
-    if (window.testRunner)
-      testRunner.dumpAsText();
-
-    var resultString = "";
-    var pathElement = document.getElementById("path");
-
-    var pointsInPath = [
-       {x: 5, y: 104},
-       {x: 5, y: 107},
-       {x: 5, y: 110}
-    ];
-
-    var pointsNotInPath = [
-        {x: 5, y: 103},
-        {x: 5, y: 111}
-    ];
-
-    pointsInPath.forEach( function(point) {
-        var pass = (pathElement == document.elementFromPoint(point.x, point.y));
-        resultString += ((pass) ? "PASS" : "FAIL") + " path contains point at (" + point.x + ", " + point.y + ")\n";
-    });
-    pointsNotInPath.forEach( function(point) {
-        var pass = (pathElement != document.elementFromPoint(point.x, point.y));
-        resultString += ((pass) ? "PASS" : "FAIL") + " path does not contain point at (" + point.x + ", " + point.y + ")\n";
-    });
-
-    debug(resultString);
-</script>
-</body>
diff --git a/third_party/blink/web_tests/wpt_internal/storage-access-api/requestStorageAccessForOrigin.sub.tentative.window.js b/third_party/blink/web_tests/wpt_internal/storage-access-api/requestStorageAccessForOrigin.sub.tentative.window.js
index de77b3e..3cf94c74 100644
--- a/third_party/blink/web_tests/wpt_internal/storage-access-api/requestStorageAccessForOrigin.sub.tentative.window.js
+++ b/third_party/blink/web_tests/wpt_internal/storage-access-api/requestStorageAccessForOrigin.sub.tentative.window.js
@@ -75,7 +75,7 @@
     return promise
         .then(t.unreached_func('Should have rejected: ' + description))
         .catch(function(e) {
-          assert_equals(e.name, 'SecurityError', description);
+          assert_equals(e.name, 'InvalidStateError', description);
         });
   }, '[non-fully-active] document.requestStorageAccessForOrigin() should not resolve when run in a detached frame');
 
@@ -86,7 +86,7 @@
     return promise
         .then(t.unreached_func('Should have rejected: ' + description))
         .catch(function(e) {
-          assert_equals(e.name, 'SecurityError', description);
+          assert_equals(e.name, 'InvalidStateError', description);
         });
   }, '[non-fully-active] document.requestStorageAccessForOrigin() should not resolve when run in a detached DOMParser document');
 
diff --git a/third_party/libavif/BUILD.gn b/third_party/libavif/BUILD.gn
index deaaaeea..fa0d77f3 100644
--- a/third_party/libavif/BUILD.gn
+++ b/third_party/libavif/BUILD.gn
@@ -18,6 +18,7 @@
     "src/src/rawdata.c",
     "src/src/read.c",
     "src/src/reformat.c",
+    "src/src/reformat_libsharpyuv.c",
     "src/src/reformat_libyuv.c",
     "src/src/scale.c",
     "src/src/stream.c",
diff --git a/third_party/subresource-filter-ruleset/README.chromium b/third_party/subresource-filter-ruleset/README.chromium
index 37c8e5e..fcf9a1a 100644
--- a/third_party/subresource-filter-ruleset/README.chromium
+++ b/third_party/subresource-filter-ruleset/README.chromium
@@ -1,6 +1,6 @@
 Name: EasyList
 URL: https://easylist.to/easylist/easylist.txt
-Version: 202208151610
+Version: 202209201344
 License: Creative Commons Attribution-ShareAlike 3.0 Unported
 License Android Compatible: yes
 License File: LICENSE
diff --git a/third_party/subresource-filter-ruleset/data/UnindexedRules.sha1 b/third_party/subresource-filter-ruleset/data/UnindexedRules.sha1
index bfaaedd..c2657a497 100644
--- a/third_party/subresource-filter-ruleset/data/UnindexedRules.sha1
+++ b/third_party/subresource-filter-ruleset/data/UnindexedRules.sha1
@@ -1 +1 @@
-d26fee22ae18ede362eda438c0062e8778ec7722
+423cb4d8abf7655ff4b6fe9850d9f746f4603a43
\ No newline at end of file
diff --git a/third_party/subresource-filter-ruleset/manifest.json b/third_party/subresource-filter-ruleset/manifest.json
index 3786271..67c31b2 100644
--- a/third_party/subresource-filter-ruleset/manifest.json
+++ b/third_party/subresource-filter-ruleset/manifest.json
@@ -2,5 +2,5 @@
   "manifest_version": 2,
   "name": "Subresource Filtering Rules",
   "ruleset_format": 1,
-  "version": "9.38.0"
+  "version": "9.40.0"
 }
diff --git a/tools/android/instant_start/benchmark.py b/tools/android/instant_start/benchmark.py
index f2bb6f7..c5bea65 100755
--- a/tools/android/instant_start/benchmark.py
+++ b/tools/android/instant_start/benchmark.py
@@ -62,7 +62,6 @@
         '/start_surface_variation/single'
         '/show_last_active_tab_only/true'
         '/open_ntp_instead_of_start/true'
-        '/exclude_mv_tiles/true'
     ] + extra_cmd)
 
     if reinstall:
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index eb48edb..639890cd 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -415,7 +415,7 @@
       'fuchsia-fyi-arm64-emu-arg': 'release_trybot_fuchsia_arm64',
       'fuchsia-fyi-arm64-rel': 'release_bot_fuchsia_arm64',
       'fuchsia-fyi-cfv2-script': 'release_bot_fuchsia_cfv2_script',
-      'fuchsia-fyi-x64-rel': 'release_bot_fuchsia',
+      'fuchsia-fyi-x64-rel': 'release_bot_fuchsia_cfv2_script',
       'fuchsia-fyi-x64-wst': 'fuchsia_workstation_bot',
       'ios-fieldtrial-rel': 'ios_simulator_debug_static_bot_xctest_arm64',
       'ios-m1-simulator': 'ios_simulator_debug_static_bot_xctest_arm64',
@@ -484,6 +484,7 @@
       'win-upload-perfetto': 'release_bot_perfetto_zlib_reclient',
       'win10-code-coverage': 'clang_code_coverage_reclient',
       'win10-rel-no-external-ip': 'gpu_tests_release_bot_minimal_symbols_reclient',
+      'win10-wpt-content-shell-fyi-rel': 'release_trybot_minimal_symbols_reclient',
       'win32-archive-rel-goma-rbe-canary': 'release_bot_x86_minimal_symbols_enable_archive_compression',
       'win32-archive-rel-goma-rbe-latest': 'release_bot_x86_minimal_symbols_enable_archive_compression',
       'win32-arm64-rel': 'win32_arm64_release_bot_reclient',
@@ -1001,7 +1002,6 @@
       'android-marshmallow-x86-rel-non-cq': 'android_release_trybot_x86_fastbuild_webview_google',
       'android-marshmallow-x86-rel-reclient': 'android_release_trybot_x86_fastbuild_webview_google_coverage_reclient',
       'android-nougat-x86-rel': 'android_release_trybot_x86_fastbuild_webview_monochrome',
-      'android-opus-arm-rel': 'android_release_trybot',
       'android-oreo-arm64-cts-networkservice-dbg': 'android_debug_trybot_arm64',
       'android-oreo-arm64-dbg': 'android_debug_trybot_arm64',
       'android-perfetto-rel': 'perfetto_release_trybot_android',
@@ -1152,7 +1152,7 @@
       'cast_shell_linux_dbg': 'cast_debug_bot',
       'chromium_presubmit': 'presubmit',
       'fuchsia-fyi-arm64-rel': 'release_trybot_fuchsia_arm64',
-      'fuchsia-fyi-x64-rel': 'release_trybot_fuchsia',
+      'fuchsia-fyi-x64-rel': 'release_trybot_fuchsia_cfv2_script',
       'gpu-fyi-try-lacros-amd-rel': 'gpu_tests_ozone_linux_non_x11_release_trybot',
       'gpu-fyi-try-lacros-intel-rel': 'gpu_tests_ozone_linux_non_x11_release_trybot',
       'gpu-fyi-try-linux-amd-rel': 'gpu_fyi_tests_release_trybot',
@@ -3637,6 +3637,10 @@
       'release_trybot', 'fuchsia', 'cast_receiver_size_optimized',
     ],
 
+    'release_trybot_fuchsia_cfv2_script': [
+      'release_trybot', 'fuchsia', 'fuchsia_cfv2_script',
+    ],
+
     'release_trybot_minimal_symbols_reclient': [
       'release_trybot_minimal_symbols_reclient',
     ],
diff --git a/tools/mb/mb_config_expectations/chromium.fyi.json b/tools/mb/mb_config_expectations/chromium.fyi.json
index a74305a6..cfb8342 100644
--- a/tools/mb/mb_config_expectations/chromium.fyi.json
+++ b/tools/mb/mb_config_expectations/chromium.fyi.json
@@ -862,6 +862,7 @@
       "is_component_build": false,
       "is_debug": false,
       "target_os": "fuchsia",
+      "use_cfv2_script": true,
       "use_goma": true
     }
   },
@@ -1650,6 +1651,15 @@
       "use_remoteexec": true
     }
   },
+  "win10-wpt-content-shell-fyi-rel": {
+    "gn_args": {
+      "dcheck_always_on": true,
+      "is_component_build": false,
+      "is_debug": false,
+      "symbol_level": 1,
+      "use_remoteexec": true
+    }
+  },
   "win32-archive-rel-goma-rbe-canary": {
     "gn_args": {
       "dcheck_always_on": false,
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.android.json b/tools/mb/mb_config_expectations/tryserver.chromium.android.json
index 53f997c7..cbc2673 100644
--- a/tools/mb/mb_config_expectations/tryserver.chromium.android.json
+++ b/tools/mb/mb_config_expectations/tryserver.chromium.android.json
@@ -664,19 +664,6 @@
       "use_goma": true
     }
   },
-  "android-opus-arm-rel": {
-    "gn_args": {
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "strip_debug_info": true,
-      "symbol_level": 0,
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
   "android-oreo-arm64-cts-networkservice-dbg": {
     "gn_args": {
       "ffmpeg_branding": "Chrome",
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.linux.json b/tools/mb/mb_config_expectations/tryserver.chromium.linux.json
index 8c515e1..d9b13f2 100644
--- a/tools/mb/mb_config_expectations/tryserver.chromium.linux.json
+++ b/tools/mb/mb_config_expectations/tryserver.chromium.linux.json
@@ -74,6 +74,7 @@
       "is_debug": false,
       "symbol_level": 0,
       "target_os": "fuchsia",
+      "use_cfv2_script": true,
       "use_goma": true
     }
   },
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 1b51579..8f8ba69 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -43666,6 +43666,9 @@
   <int value="12" label="Show welcome+sign-in screen"/>
   <int value="13" label="Close welcome+sign-in with sign-in"/>
   <int value="14" label="Close welcome+sign-in without sign-in"/>
+  <int value="15" label="Show tangible sync screen"/>
+  <int value="16" label="Close tangible sync with sync"/>
+  <int value="17" label="Close tangible sync without sync"/>
 </enum>
 
 <enum name="FirstSmartLockStatus">
@@ -89911,6 +89914,18 @@
   <int value="2" label="PDP with cluster ID"/>
 </enum>
 
+<enum name="ShoppingSubscriptionsRequestStatus">
+  <summary>The different statuses of a shopping subscriptions request.</summary>
+  <int value="0" label="Succeeded"/>
+  <int value="1" label="Server failed to parse the request"/>
+  <int value="2"
+      label="Server successfully parsed the request, but failed afterwards"/>
+  <int value="3"
+      label="Local storage failed to load, create, or delete subscriptions"/>
+  <int value="4" label="Dropped since last sync with server failed"/>
+  <int value="5" label="Invalid argument"/>
+</enum>
+
 <enum name="ShortcutsCreationResult">
   <summary>Result of creating shortcuts for PWA.</summary>
   <int value="0" label="Success"/>
diff --git a/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS b/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS
index 69d6593..7d8b833 100644
--- a/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS
+++ b/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS
@@ -7,6 +7,7 @@
 mthiesse@chromium.org
 andzaytsev@google.com
 ckitagawa@chromium.org
+sinansahin@google.com
 # apps
 nancylingwang@chromium.org
 tby@chromium.org
diff --git a/tools/metrics/histograms/metadata/autofill/histograms.xml b/tools/metrics/histograms/metadata/autofill/histograms.xml
index 6828a6a..adf05b3c 100644
--- a/tools/metrics/histograms/metadata/autofill/histograms.xml
+++ b/tools/metrics/histograms/metadata/autofill/histograms.xml
@@ -254,7 +254,7 @@
 
 <histogram
     name="Autofill.Ablation.FillDurationSinceInteraction.{FormType}.{Group}"
-    units="ms" expires_after="M108">
+    units="ms" expires_after="M112">
   <owner>battre@chromium.org</owner>
   <owner>chrome-autofill-team@google.com</owner>
   <summary>
@@ -269,7 +269,7 @@
 
 <histogram
     name="Autofill.Ablation.FormSubmissionAfterInteraction.{FormType}.{Group}"
-    enum="Boolean" expires_after="M108">
+    enum="Boolean" expires_after="M112">
   <owner>battre@chromium.org</owner>
   <owner>chrome-autofill-team@google.com</owner>
   <summary>
@@ -365,7 +365,7 @@
 
 <histogram
     name="Autofill.AddressTokenVerificationStatusAtProfileUsage.{AddressType}"
-    enum="AufofillStructuredTokenVerificationStatus" expires_after="M108">
+    enum="AufofillStructuredTokenVerificationStatus" expires_after="M112">
   <owner>koerber@google.com</owner>
   <owner>chrome-autofill-alerts@google.com</owner>
   <summary>
@@ -838,7 +838,7 @@
 </histogram>
 
 <histogram name="Autofill.CountryCodeResolution.{Situation}"
-    enum="DetectionOfCountryName" expires_after="M108">
+    enum="DetectionOfCountryName" expires_after="M112">
   <owner>battre@google.com</owner>
   <owner>chrome-autofill-alerts@google.com</owner>
   <summary>
@@ -1431,7 +1431,7 @@
 
 <histogram
     name="Autofill.FormAffectedByLaxLocalHeuristicRule.FillingAcceptance{AutofillFormType}"
-    enum="BooleanAutofillFillingAcceptance" expires_after="M108">
+    enum="BooleanAutofillFillingAcceptance" expires_after="M112">
   <owner>battre@google.com</owner>
   <owner>chrome-autofill-alerts@google.com</owner>
   <summary>
@@ -1449,7 +1449,7 @@
 
 <histogram
     name="Autofill.FormAffectedByLaxLocalHeuristicRule.FillingCorrectness{AutofillFormType}"
-    enum="BooleanAutofillFillingCorrectness" expires_after="M108">
+    enum="BooleanAutofillFillingCorrectness" expires_after="M112">
   <owner>battre@google.com</owner>
   <owner>chrome-autofill-alerts@google.com</owner>
   <summary>
@@ -2178,7 +2178,7 @@
 </histogram>
 
 <histogram name="Autofill.NameTokenVerificationStatusAtProfileUsage.{NameType}"
-    enum="AufofillStructuredTokenVerificationStatus" expires_after="M108">
+    enum="AufofillStructuredTokenVerificationStatus" expires_after="M112">
   <owner>koerber@google.com</owner>
   <owner>chrome-autofill-alerts@google.com</owner>
   <summary>
@@ -2198,7 +2198,7 @@
 
 <histogram
     name="Autofill.NumberOfAutofilledFieldsAtSubmission.{AcceptanceStatus}"
-    units="fields" expires_after="M108">
+    units="fields" expires_after="M112">
   <owner>koerber@google.com</owner>
   <owner>chrome-autofill-alerts@google.com</owner>
   <summary>
@@ -2214,7 +2214,7 @@
 
 <histogram
     name="Autofill.NumberOfAutofilledFieldsWithAutocompleteUnrecognizedAtSubmission.{AcceptanceStatus}"
-    units="fields" expires_after="M108">
+    units="fields" expires_after="M112">
   <owner>koerber@google.com</owner>
   <owner>chrome-autofill-alerts@google.com</owner>
   <summary>
@@ -2674,7 +2674,7 @@
 </histogram>
 
 <histogram name="Autofill.PerfectFilling.{FormType}" enum="Boolean"
-    expires_after="M108">
+    expires_after="M112">
   <owner>koerber@google.com</owner>
   <owner>chrome-autofill-alerts@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/chromeos/histograms.xml b/tools/metrics/histograms/metadata/chromeos/histograms.xml
index edfdaaf..29f13e77 100644
--- a/tools/metrics/histograms/metadata/chromeos/histograms.xml
+++ b/tools/metrics/histograms/metadata/chromeos/histograms.xml
@@ -2206,7 +2206,7 @@
 </histogram>
 
 <histogram name="ChromeOS.Zram.{CountMetric}" units="count"
-    expires_after="2022-11-10">
+    expires_after="2023-03-30">
   <owner>ctshao@google.com</owner>
   <owner>bgeffon@chromium.org</owner>
   <owner>chromeos-memory@google.com</owner>
@@ -2240,7 +2240,7 @@
 </histogram>
 
 <histogram name="ChromeOS.Zram.{HugePageActivityMetric}" units="pages"
-    expires_after="2022-11-10">
+    expires_after="2023-03-30">
   <owner>ctshao@google.com</owner>
   <owner>raging@google.com</owner>
   <owner>bgeffon@chromium.org</owner>
@@ -2258,7 +2258,7 @@
 </histogram>
 
 <histogram name="ChromeOS.Zram.{PctMetric}" units="%"
-    expires_after="2022-11-10">
+    expires_after="2023-03-30">
   <owner>ctshao@google.com</owner>
   <owner>bgeffon@chromium.org</owner>
   <owner>chromeos-memory@google.com</owner>
@@ -2277,7 +2277,7 @@
 </histogram>
 
 <histogram name="ChromeOS.Zram.{SizeMetric}" units="MB"
-    expires_after="2022-11-10">
+    expires_after="2023-03-30">
   <owner>ctshao@google.com</owner>
   <owner>bgeffon@chromium.org</owner>
   <owner>chromeos-memory@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/commerce/histograms.xml b/tools/metrics/histograms/metadata/commerce/histograms.xml
index 91719e3..62af416 100644
--- a/tools/metrics/histograms/metadata/commerce/histograms.xml
+++ b/tools/metrics/histograms/metadata/commerce/histograms.xml
@@ -479,6 +479,28 @@
   </summary>
 </histogram>
 
+<histogram name="Commerce.Subscriptions.TrackResult"
+    enum="ShoppingSubscriptionsRequestStatus" expires_after="2023-04-25">
+  <owner>zhiyuancai@chromium.org</owner>
+  <owner>ayman@chromium.org</owner>
+  <owner>chrome-shopping@google.com</owner>
+  <summary>
+    Records the result of a product tracking request in the subscriptions
+    manager. Recorded when the request finishes.
+  </summary>
+</histogram>
+
+<histogram name="Commerce.Subscriptions.UntrackResult"
+    enum="ShoppingSubscriptionsRequestStatus" expires_after="2023-04-25">
+  <owner>zhiyuancai@chromium.org</owner>
+  <owner>ayman@chromium.org</owner>
+  <owner>chrome-shopping@google.com</owner>
+  <summary>
+    Records the result of a product untracking request in the subscriptions
+    manager. Recorded when the request finishes.
+  </summary>
+</histogram>
+
 <histogram name="Commerce.Subscriptions.{ManagementType}.Count"
     units="subscriptions" expires_after="2023-04-25">
   <owner>zhiyuancai@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/ios/histograms.xml b/tools/metrics/histograms/metadata/ios/histograms.xml
index c3a4c46f..8882005 100644
--- a/tools/metrics/histograms/metadata/ios/histograms.xml
+++ b/tools/metrics/histograms/metadata/ios/histograms.xml
@@ -660,6 +660,8 @@
         summary="The screen that asks the user to turn on sync while no
                  account picker is present. Displayed when MICe is enabled or
                  when no account is detected."/>
+    <variant name="TangibleSyncScreen"
+        summary="The tangible sync screen that asks the user to turn on sync."/>
     <variant name="WelcomeScreenWithoutUMACheckbox"
         summary="Welcome screen without UMA checkbox. Displayed when MICe is
                  enabled."/>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml
index 29491748..75f4f2e 100644
--- a/tools/metrics/histograms/metadata/others/histograms.xml
+++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -5858,6 +5858,19 @@
   </summary>
 </histogram>
 
+<histogram name="Feedback.ChromeOSApp.Duration.GetBigFeedbackLogs" units="ms"
+    expires_after="2023-06-30">
+  <owner>xiangdongkong@google.com</owner>
+  <owner>cros-feedback-app@google.com</owner>
+  <summary>
+    Records the elapsed time from the start of fetching Debugd logs via the
+    GetBigFeedbackLogs dbus method to when the data has been retrieved. Fires
+    during the process of sending a feedback report on Chrome OS, or when the
+    user previews the system logs from the feedback app on Chrome OS.
+    GetBigFeedbackLogs is the dbus method used.
+  </summary>
+</histogram>
+
 <histogram name="Feedback.ChromeOSApp.ExitPath" enum="FeedbackAppExitPath"
     expires_after="2023-07-27">
   <owner>longbowei@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/power/histograms.xml b/tools/metrics/histograms/metadata/power/histograms.xml
index 326e0c0..b20fc25 100644
--- a/tools/metrics/histograms/metadata/power/histograms.xml
+++ b/tools/metrics/histograms/metadata/power/histograms.xml
@@ -22,60 +22,72 @@
 
 <histograms>
 
+<variants name="IntervalType">
+<!--
+    Variants describing if the histogram contains all samples, only the first
+    sample, or only subsequent ones.
+  -->
+
+  <variant name="" summary="all recorded samples"/>
+  <variant name=".Initial"
+      summary="only the first sample recorded of the current Chrome
+               execution. The discharge potentially covers an interval of
+               time during which Chrome wasn't yet running"/>
+  <variant name=".Periodic"
+      summary="every sample recorded after the first one"/>
+</variants>
+
 <variants name="UsageScenario">
 <!--
-  Variants describing the usage scenario for a 2 minutes interval. Consider
-  updating UsageScenario10Sec when updating this.
+  Variants describing the usage scenario for a time interval. Consider updating
+  UsageScenario10Sec when updating this.
 -->
 
-  <variant name="" summary="2 minutes runtime intervals"/>
+  <variant name="" summary="all intervals no matter the usage scenario"/>
   <variant name=".AllTabsHidden"
-      summary="2 minutes runtime intervals during which there were tabs, but
-               none visible">
+      summary="intervals during which there were tabs, but none visible">
     <obsolete>
       01/2022: Replaced with AllTabsHidden_VideoCapture, AllTabsHidden_Audio and
       AllTabsHidden_NoVideoCaptureOrAudio.
     </obsolete>
   </variant>
   <variant name=".AllTabsHidden_Audio"
-      summary="2 minutes runtime intervals during which there was no visible
-               tab and no video capture, but there was audio"/>
+      summary="intervals during which there was no visible tab and no video
+               capture, but there was audio"/>
   <variant name=".AllTabsHidden_NoVideoCaptureOrAudio"
-      summary="2 minutes runtime intervals during which there was no visible
-               tab, no video capture and no audio"/>
+      summary="intervals during which there was no visible tab, no video
+               capture and no audio"/>
   <variant name=".AllTabsHidden_VideoCapture"
-      summary="2 minutes runtime intervals during which there was no visible
-               tab, but there was video capture"/>
+      summary="intervals during which there was no visible tab, but there was
+               video capture"/>
   <variant name=".Audio"
-      summary="2 minutes runtime intervals during which there was audio and
-               at least 1 visible tab, but there was no video playback or
-               video capture"/>
+      summary="intervals during which there was audio and at least 1 visible
+               tab, but there was no video playback or video capture"/>
   <variant name=".EmbeddedVideo_NoNavigation"
-      summary="2 minutes runtime intervals during which a video played in a
-               visible tab and there was no navigation and no video capture"/>
+      summary="intervals during which a video played in a visible tab and
+               there was no navigation and no video capture"/>
   <variant name=".EmbeddedVideo_WithNavigation"
-      summary="2 minutes runtime intervals during which a video played in a
-               visible tab and there was a navigation, but no video capture"/>
+      summary="intervals during which a video played in a visible tab and
+               there was a navigation, but no video capture"/>
   <variant name=".FullscreenVideo"
-      summary="2 minutes runtime intervals during which a video played in
-               fullscreen and there was no video capture"/>
+      summary="intervals during which a video played in fullscreen and there
+               was no video capture"/>
   <variant name=".Interaction"
-      summary="2 minutes runtime intervals during which there was at least 1
-               visible tab and a user interaction, but no navigation, audio,
-               video playback or video capture"/>
-  <variant name=".Navigation"
-      summary="2 minutes runtime intervals during which there was at least 1
-               visible tab and a navigation, but no audio, video playback or
+      summary="intervals during which there was at least 1 visible tab and a
+               user interaction, but no navigation, audio, video playback or
                video capture"/>
+  <variant name=".Navigation"
+      summary="intervals during which there was at least 1 visible tab and a
+               navigation, but no audio, video playback or video capture"/>
   <variant name=".Passive"
-      summary="2 minutes runtime intervals during which there was at least 1
-               visible tab, but no user interaction, navigation, audio, video
-               playback or video capture"/>
+      summary="intervals during which there was at least 1 visible tab, but
+               no user interaction, navigation, audio, video playback or
+               video capture"/>
   <variant name=".VideoCapture"
-      summary="2 minutes runtime intervals during which there was at least 1
-               visible tab and video capture"/>
+      summary="intervals during which there was at least 1 visible tab and
+               video capture"/>
   <variant name=".ZeroWindow"
-      summary="2 minutes runtime intervals during which there was no window"/>
+      summary="intervals during which there was no window"/>
 </variants>
 
 <variants name="UsageScenario10sec">
@@ -141,7 +153,7 @@
   <owner>catan-team@chromium.org</owner>
   <summary>
     See definition of PerformanceClass.AverageCPU6.ProcessName. This is recorded
-    for {UsageScenario} (see go/chrome_power_use_per_scenario).
+    every 2 minutes for {UsageScenario} (see go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
@@ -178,7 +190,8 @@
   <owner>catan-team@chromium.org</owner>
   <summary>
     See definition of PerformanceMonitor.EnergyImpact2.ProcessName. This is
-    recorded for {UsageScenario} (see go/chrome_power_use_per_scenario).
+    recorded every 2 minutes for {UsageScenario} (see
+    go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
@@ -224,7 +237,8 @@
   <owner>catan-team@chromium.org</owner>
   <summary>
     See definition of PerformanceMonitor.IdleWakeups2.ProcessName. This is
-    recorded for {UsageScenario} (see go/chrome_power_use_per_scenario).
+    recorded every 2 minutes for {UsageScenario} (see
+    go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
@@ -254,7 +268,8 @@
   <owner>catan-team@chromium.orgg</owner>
   <summary>
     See definition of PerformanceMonitor.PackageExitIdleWakeups2.ProcessName.
-    This is recorded for {UsageScenario} (see go/chrome_power_use_per_scenario).
+    This is recorded every 2 minutes for {UsageScenario} (see
+    go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
@@ -297,7 +312,7 @@
   <summary>
     The IO reads reported by the resource coalition mechanism on macOS. The data
     is reported as the rate per second during this interval with a byte
-    granularity. This is recorded for {UsageScenario} (see
+    granularity. This is recorded every 2 minutes for {UsageScenario} (see
     go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
@@ -311,7 +326,7 @@
   <summary>
     The IO writes reported by the resource coalition mechanism on macOS. The
     data is reported as the rate per second during this interval with a byte
-    granularity. This is recorded for {UsageScenario} (see
+    granularity. This is recorded every 2 minutes for {UsageScenario} (see
     go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
@@ -359,7 +374,7 @@
     macOS. The utilization is in the 0-100% range per CPU, which is then summed
     up and multiplied by 100. The histogram is capped at 20000 (equivalent to 2
     cores fully loaded). I.e. 4 cores busy at 25% each will read as 25 * 4 * 100
-    = 10000. This is recorded for {UsageScenario} (see
+    = 10000. This is recorded every 2 minutes for {UsageScenario} (see
     go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
@@ -396,7 +411,8 @@
     Chrome processes no matter how short-lived, as well as XPC services running
     on Chrome's behalf.
 
-    This is recorded for {UsageScenario} (see go/chrome_power_use_per_scenario).
+    This is recorded every 2 minutes for {UsageScenario} (see
+    go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
@@ -425,7 +441,7 @@
     Average GPU utilization reported by the resource coalition mechanism on
     macOS. The utilization is in the 0-100% range and is multiplied by 100. The
     histogram is capped at 10000 (equivalent to the GPU being used 100% of the
-    time). This is recorded for {UsageScenario} (see
+    time). This is recorded every 2 minutes for {UsageScenario} (see
     go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
@@ -439,8 +455,8 @@
   <summary>
     The interrupt wakeup rate reported by the resource coalition mechanism on
     macOS. The data is reported as the rate per second during this interval with
-    a milliwakeup granularity. This is recorded for {UsageScenario} (see
-    go/chrome_power_use_per_scenario).
+    a milliwakeup granularity. This is recorded every 2 minutes for
+    {UsageScenario} (see go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
@@ -453,8 +469,8 @@
   <summary>
     The platform idle wakeup rate reported by the resource coalition mechanism
     on macOS. The data is reported as the rate per second during this interval
-    with a milliwakeup granularity. This is recorded for {UsageScenario} (see
-    go/chrome_power_use_per_scenario).
+    with a milliwakeup granularity. This is recorded every 2 minutes for
+    {UsageScenario} (see go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
@@ -465,8 +481,8 @@
   <owner>catan-team@chromium.org</owner>
   <summary>
     The power usage reported by the resource coalition mechanism on macOS. Only
-    reported on devices with an ARM CPU. This is recorded for {UsageScenario}
-    (see go/chrome_power_use_per_scenario).
+    reported on devices with an ARM CPU. This is recorded every 2 minutes for
+    {UsageScenario} (see go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
@@ -480,8 +496,8 @@
     Average CPU time spent in a given QoS level, as reported by the resource
     coalition mechanism on macOS. The utilization is in the 0-100% range and is
     multiplied by 100. The histogram is capped at 10000 (equivalent to the GPU
-    being used 100% of the time). This is recorded for {UsageScenario} (see
-    go/chrome_power_use_per_scenario).
+    being used 100% of the time). This is recorded every 2 minutes for
+    {UsageScenario} (see go/chrome_power_use_per_scenario).
   </summary>
   <token key="QoSLevel">
     <variant name="Background"/>
@@ -705,13 +721,38 @@
   <owner>olivierli@chromium.org</owner>
   <summary>
     Battery discharge mode describing whether BatteryDischargeRate2 could be
-    reported or not, and why. This is recorded for {UsageScenario} (an interval
-    represents 2 minutes of Chrome runtime, see
-    go/chrome_power_use_per_scenario).
+    reported or not, and why. This is recorded every 2 minutes for
+    {UsageScenario} (see go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
 
+<histogram name="Power.BatteryDischargeMode3{UsageScenario}{IntervalType}"
+    enum="BatteryDischargeMode" expires_after="2022-11-30">
+  <owner>etiennep@chromium.org</owner>
+  <owner>olivierli@chromium.org</owner>
+  <summary>
+    Battery discharge mode describing whether BatteryDischargeRate3 could be
+    reported or not, and why.
+
+    This is reported at the end of every valid 1 minute interval. An invalid
+    interval is one that deviate too much from 1 minute, which can be caused by
+    the computer going to sleep, or the OS sending multiple notifications in a
+    row.
+
+    This is recorded for {UsageScenario}.
+
+    This contains {IntervalType}.
+
+    There are 2 differences with Power.BatteryDischargeRate2. 1: When possible,
+    the intervals are aligned with battery discharge notifications from the OS
+    (MacOS only for now), and 2: Intervals represents only 1 minute of Chrome
+    runtime (as opposed to 2 minutes).
+  </summary>
+  <token key="UsageScenario" variants="UsageScenario"/>
+  <token key="IntervalType" variants="IntervalType"/>
+</histogram>
+
 <histogram name="Power.BatteryDischargeRate" units="mW"
     expires_after="2023-03-26">
   <owner>puthik@chromium.org</owner>
@@ -733,13 +774,42 @@
     the interval: 3900 mAh; - Battery charge at the end of the interval: 3700
     mAh; - Discharge proportion: (3900-3700) / 4000 = 0.05 - Reported value:
     500. This metric is only recorded when on battery power. This is reported on
-    Mac and Windows. This is recorded for {UsageScenario} (an interval
-    represents 2 minutes of Chrome runtime, see
+    Mac and Windows. This is recorded every 2 minutes for {UsageScenario} (see
     go/chrome_power_use_per_scenario).
   </summary>
   <token key="UsageScenario" variants="UsageScenario"/>
 </histogram>
 
+<histogram name="Power.BatteryDischargeRate3{UsageScenario}{IntervalType}"
+    units="hundredth of percent" expires_after="2022-11-30">
+  <owner>etiennep@chromium.org</owner>
+  <owner>olivierli@chromium.org</owner>
+  <owner>lgrey@chromium.org</owner>
+  <summary>
+    Battery discharge rate per minute, with 1/10000 of full charge resolution,
+    example: - Battery capacity = 4000 mAh; - Battery charge at the beginning of
+    the interval: 3900 mAh; - Battery charge at the end of the interval: 3700
+    mAh; - Discharge proportion: (3900-3700) / 4000 = 0.05 - Reported value:
+    500.
+
+    This is reported at the end of every valid 1 minute interval. An invalid
+    interval is one that deviate too much from 1 minute, which can be caused by
+    the computer going to sleep, or the OS sending multiple notifications in a
+    row.
+
+    This is recorded for {UsageScenario}.
+
+    This contains {IntervalType}.
+
+    There are 2 differences with Power.BatteryDischargeRate2. 1: When possible,
+    the intervals are aligned with battery discharge notifications from the OS
+    (MacOS only for now), and 2: Intervals represents only 1 minute of Chrome
+    runtime (as opposed to 2 minutes).
+  </summary>
+  <token key="UsageScenario" variants="UsageScenario"/>
+  <token key="IntervalType" variants="IntervalType"/>
+</histogram>
+
 <histogram name="Power.BatteryDischargeRateWhileHibernated" units="mW"
     expires_after="2023-06-15">
   <owner>puthik@chromium.org</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index f5a9946..b05b79bd 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,8 +5,8 @@
             "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm64/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell"
         },
         "win": {
-            "hash": "bdc0f05ef5e1749da2ca70dfceaca63891437f92",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/8c7da08a03c5eda1be6768a949625c1dfa30e2ca/trace_processor_shell.exe"
+            "hash": "b691865de48e9be4ff4405e0c74c1c87c9eaf241",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/a79be349818632ade2d345205540b3dddd58b033/trace_processor_shell.exe"
         },
         "linux_arm": {
             "hash": "58893933be305d3bfe0a72ebebcacde2ac3ca893",
@@ -14,15 +14,15 @@
         },
         "mac": {
             "hash": "1c5094d9cd5b55eb1a161d76056024f1e57c030a",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/8c7da08a03c5eda1be6768a949625c1dfa30e2ca/trace_processor_shell"
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/a79be349818632ade2d345205540b3dddd58b033/trace_processor_shell"
         },
         "mac_arm64": {
             "hash": "e1ad4861384b06d911a65f035317914b8cc975c6",
             "full_remote_path": "perfetto-luci-artifacts/v25.0/mac-arm64/trace_processor_shell"
         },
         "linux": {
-            "hash": "1aceb392222766a1f338634d0cfca37679e31f9b",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/cfe31b48b9bef5b47cd50b8573fefc3c15ea3bef/trace_processor_shell"
+            "hash": "fe2278ab1e1282e4678a6000606b961d79d61ef8",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/0f0f1ffa169ed3be5c0e61443fb319df380634f0/trace_processor_shell"
         }
     },
     "power_profile.sql": {
diff --git a/ui/accessibility/ax_node_data.cc b/ui/accessibility/ax_node_data.cc
index 1206fcf8..10c84ae6 100644
--- a/ui/accessibility/ax_node_data.cc
+++ b/ui/accessibility/ax_node_data.cc
@@ -612,7 +612,7 @@
   // Elements with role='presentation' have Role::kNone. They should not be
   // named. Objects with Role::kUnknown were never given a role. This check
   // is only relevant if the name is not empty.
-  // TODO(accessibility): It would be nice to have a means to set the name
+  // TODO(crbug.com/1361972): It would be nice to have a means to set the name
   // and role at the same time to avoid this ordering requirement.
   DCHECK(name.empty() ||
          (role != ax::mojom::Role::kNone && role != ax::mojom::Role::kUnknown))
@@ -631,8 +631,8 @@
     iter->second = name;
   }
 
-  // It is possible for SetName to be called after
-  // SetNameExplicitlyEmpty.
+  // It is possible for `SetName`/`SetNameChecked` to be called after
+  // `SetNameExplicitlyEmpty`.
   if (!name.empty() &&
       GetNameFrom() == ax::mojom::NameFrom::kAttributeExplicitlyEmpty) {
     RemoveIntAttribute(ax::mojom::IntAttribute::kNameFrom);
@@ -663,6 +663,24 @@
   SetName(base::UTF16ToUTF8(name));
 }
 
+void AXNodeData::SetNameChecked(const std::string& name) {
+  SetName(name);
+
+  // We do this check after calling `SetName` because `SetName` handles the
+  // case where it is called after `SetNameExplicitlyEmpty` by removing the
+  // existing `NameFrom::kAttributeExplicitlyEmpty`.
+  DCHECK_EQ(name.empty(),
+            GetNameFrom() == ax::mojom::NameFrom::kAttributeExplicitlyEmpty)
+      << "If the accessible name of Role::" << role << " class: '"
+      << GetStringAttribute(ax::mojom::StringAttribute::kClassName)
+      << "' is being set to an empty string to improve the "
+         "user experience, call `SetNameExplicitlyEmpty` instead of `SetName`.";
+}
+
+void AXNodeData::SetNameChecked(const std::u16string& name) {
+  SetNameChecked(base::UTF16ToUTF8(name));
+}
+
 void AXNodeData::SetNameExplicitlyEmpty() {
   SetNameFrom(ax::mojom::NameFrom::kAttributeExplicitlyEmpty);
   SetName(std::string());
diff --git a/ui/accessibility/ax_node_data.h b/ui/accessibility/ax_node_data.h
index 19bae97..229c004b 100644
--- a/ui/accessibility/ax_node_data.h
+++ b/ui/accessibility/ax_node_data.h
@@ -151,10 +151,43 @@
 
   // Adds the name attribute or replaces it if already present. Also sets the
   // NameFrom attribute if not already set.
+  //
+  // [[deprecated("Replaced by `SetNameChecked` and `SetNameExplicitlyEmpty`")]]
+  // See `SetNameChecked` and `SetNameExplicitlyEmpty` which have DCHECKs for
+  // conditions expected to be true, which in reality are not always true.
+  // Tracked by crbug.com/1348081.
   void SetName(const std::string& name);
+  // [[deprecated("Replaced by `SetNameChecked` and `SetNameExplicitlyEmpty`")]]
+  // See `SetNameChecked` and `SetNameExplicitlyEmpty` which have DCHECKs for
+  // conditions expected to be true, which in reality are not always true.
+  // Tracked by crbug.com/1348081.
   void SetName(const std::u16string& name);
 
-  // Allows nameless objects to pass accessibility checks.
+  // Adds the accessible name attribute or replaces it if already present, and
+  // also sets the NameFrom attribute if not already set.
+  //
+  // The value of the accessible name is a localized, end-user-consumable string
+  // which may be derived from visible information (e.g. the text on a button)
+  // or invisible information (e.g. the alternative text describing an icon).
+  // In the case of focusable objects, the name will be presented by the screen
+  // reader when that object gains focus and is critical to understanding the
+  // purpose of that object non-visually.
+  //
+  // Note that `SetNameChecked` must only be used to set a non-empty name, a
+  // condition enforced by a DCHECK. This is done to prevent UI from
+  // accidentally being given an empty name because, as a general rule, nameless
+  // controls tend to be inaccessible. However, because there can be valid
+  // reasons to remove or prevent naming of an item `SetNameExplicitlyEmpty`
+  // provides a means for developers to do so.
+  void SetNameChecked(const std::string& name);
+  void SetNameChecked(const std::u16string& name);
+
+  // Indicates this object should not have an accessible name. One use case is
+  // to prevent screen readers from speaking redundant information, for instance
+  // if the parent View has the same name as this View, causing the screen
+  // reader to speak the name twice. This function can also be used to allow
+  // focusable nameless objects to pass accessibility checks in tests, a
+  // practice that should not be applied in production code.
   void SetNameExplicitlyEmpty();
 
   // Adds the description attribute or replaces it if already present.
diff --git a/ui/accessibility/ax_node_data_unittest.cc b/ui/accessibility/ax_node_data_unittest.cc
index e7072fae..e3e3d8f 100644
--- a/ui/accessibility/ax_node_data_unittest.cc
+++ b/ui/accessibility/ax_node_data_unittest.cc
@@ -401,6 +401,10 @@
   EXPECT_EQ("baz", data.GetStringAttribute(ax::mojom::StringAttribute::kName));
   EXPECT_EQ(data.GetNameFrom(), ax::mojom::NameFrom::kContents);
 
+  // Setting the name to the empty string should not be done by
+  // `SetNameChecked`, which enforces that expectation with a DCHECK.
+  EXPECT_DCHECK_DEATH(data.SetNameChecked(""));
+
   data.SetNameExplicitlyEmpty();
   EXPECT_EQ("", data.GetStringAttribute(ax::mojom::StringAttribute::kName));
   EXPECT_EQ(data.GetNameFrom(), ax::mojom::NameFrom::kAttributeExplicitlyEmpty);
diff --git a/ui/android/edge_effect.cc b/ui/android/edge_effect.cc
index af9e04d9..9b2eb0c 100644
--- a/ui/android/edge_effect.cc
+++ b/ui/android/edge_effect.cc
@@ -55,14 +55,16 @@
   // Transforms assume the edge layers are anchored to their *top center point*.
   switch (edge) {
     case EdgeEffect::EDGE_TOP:
-      return gfx::Transform(1, 0, 0, 1, 0, offset);
+      return gfx::Transform::MakeTranslation(0, offset);
     case EdgeEffect::EDGE_LEFT:
-      return gfx::Transform(0, 1, -1, 0, -viewport_size.height() / 2.f + offset,
-                            viewport_size.height() / 2.f);
+      return gfx::Transform::Affine(0, 1, -1, 0,
+                                    -viewport_size.height() / 2.f + offset,
+                                    viewport_size.height() / 2.f);
     case EdgeEffect::EDGE_BOTTOM:
-      return gfx::Transform(-1, 0, 0, -1, 0, viewport_size.height() + offset);
+      return gfx::Transform::Affine(-1, 0, 0, -1, 0,
+                                    viewport_size.height() + offset);
     case EdgeEffect::EDGE_RIGHT:
-      return gfx::Transform(
+      return gfx::Transform::Affine(
           0, -1, 1, 0,
           -viewport_size.height() / 2.f + viewport_size.width() + offset,
           viewport_size.height() / 2.f);
diff --git a/ui/aura/client/screen_position_client_unittest.cc b/ui/aura/client/screen_position_client_unittest.cc
index eb73a3f2..583f048 100644
--- a/ui/aura/client/screen_position_client_unittest.cc
+++ b/ui/aura/client/screen_position_client_unittest.cc
@@ -57,7 +57,7 @@
   EXPECT_EQ(gfx::Point(300, 300), point);
 
   point = gfx::Point(100, 100);
-  child->SetTransform(gfx::Transform(1, 0, 0, 1, 100, 100));
+  child->SetTransform(gfx::Transform::MakeTranslation(100, 100));
   test_client.ConvertPointToRootWindowIgnoringTransforms(child.get(), &point);
   EXPECT_EQ(gfx::Point(300, 300), point);
 }
diff --git a/ui/base/models/dialog_model_field.cc b/ui/base/models/dialog_model_field.cc
index 93ae25f45..20494f9 100644
--- a/ui/base/models/dialog_model_field.cc
+++ b/ui/base/models/dialog_model_field.cc
@@ -4,19 +4,27 @@
 
 #include "ui/base/models/dialog_model_field.h"
 
+#include <string>
+
 #include "base/bind.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/models/dialog_model.h"
 
 namespace ui {
 
+DialogModelLabel::TextReplacement::TextReplacement(std::u16string text,
+                                                   bool is_emphasized)
+    : text_(text), is_emphasized_(is_emphasized) {}
 DialogModelLabel::TextReplacement::TextReplacement(
     int message_id,
     Callback callback,
     std::u16string accessible_name)
     : text_(l10n_util::GetStringUTF16(message_id)),
+      is_emphasized_(false),
       callback_(callback),
-      accessible_name_(accessible_name) {}
+      accessible_name_(accessible_name) {
+  // Emphasized links are not supported, at least for now.
+}
 DialogModelLabel::TextReplacement::TextReplacement(const TextReplacement&) =
     default;
 DialogModelLabel::TextReplacement::~TextReplacement() = default;
@@ -76,6 +84,16 @@
   return TextReplacement(message_id, callback, accessible_name);
 }
 
+DialogModelLabel::TextReplacement DialogModelLabel::CreatePlainText(
+    std::u16string text) {
+  return TextReplacement(text);
+}
+
+DialogModelLabel::TextReplacement DialogModelLabel::CreateEmphasizedText(
+    std::u16string text) {
+  return TextReplacement(text, true);
+}
+
 DialogModelField::DialogModelField(base::PassKey<DialogModel>,
                                    DialogModel* model,
                                    Type type,
diff --git a/ui/base/models/dialog_model_field.h b/ui/base/models/dialog_model_field.h
index 0d23fdc..5d8fb77 100644
--- a/ui/base/models/dialog_model_field.h
+++ b/ui/base/models/dialog_model_field.h
@@ -47,24 +47,32 @@
     TextReplacement(const TextReplacement&);
     ~TextReplacement();
 
-    std::u16string text() const { return text_; }
-    Callback callback() const { return callback_; }
-    std::u16string accessible_name() const { return accessible_name_; }
+    const std::u16string& text() const { return text_; }
+    bool is_emphasized() const { return is_emphasized_; }
+    const absl::optional<Callback>& callback() const { return callback_; }
+    const absl::optional<std::u16string>& accessible_name() const {
+      return accessible_name_;
+    }
 
    private:
     friend class DialogModelLabel;
 
+    // Used for regular and emphasized text.
+    explicit TextReplacement(std::u16string text, bool is_emphasized = false);
+    // Used for links.
     TextReplacement(int message_id,
                     Callback closure,
                     std::u16string accessible_name = std::u16string());
 
     const std::u16string text_;
-    const Callback callback_;
-    const std::u16string accessible_name_;
+    const bool is_emphasized_;
+    const absl::optional<Callback> callback_;
+    const absl::optional<std::u16string> accessible_name_;
   };
 
   explicit DialogModelLabel(int message_id);
   explicit DialogModelLabel(std::u16string fixed_string);
+
   DialogModelLabel(const DialogModelLabel&);
   DialogModelLabel& operator=(const DialogModelLabel&) = delete;
   ~DialogModelLabel();
@@ -75,6 +83,7 @@
       int message_id,
       std::vector<TextReplacement> replacements);
 
+  // Builder methods for TextReplacements.
   static TextReplacement CreateLink(
       int message_id,
       base::RepeatingClosure closure,
@@ -83,6 +92,8 @@
       int message_id,
       Callback callback,
       std::u16string accessible_name = std::u16string());
+  static TextReplacement CreatePlainText(std::u16string text);
+  static TextReplacement CreateEmphasizedText(std::u16string text);
 
   // Gets the string. Not for use with replacements, in which case the caller
   // must use replacements() and message_id() to construct the final label. This
diff --git a/ui/compositor/layer_animation_element_unittest.cc b/ui/compositor/layer_animation_element_unittest.cc
index 5c3c20b7..5b56d14c 100644
--- a/ui/compositor/layer_animation_element_unittest.cc
+++ b/ui/compositor/layer_animation_element_unittest.cc
@@ -25,7 +25,8 @@
 // correctly assigns values. See www.crbug.com/483134.
 TEST(TargetValueTest, VerifyLayerAnimationDelegateConstructor) {
   const gfx::Rect kBounds(1, 2, 3, 5);
-  const gfx::Transform kTransform(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f);
+  const auto kTransform =
+      gfx::Transform::Affine(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f);
   const float kOpacity = 1.235f;
   const bool kVisibility = false;
   const float kBrightness = 2.358f;
diff --git a/ui/display/manager/touch_transform_controller.cc b/ui/display/manager/touch_transform_controller.cc
index 64b63ac..865150a 100644
--- a/ui/display/manager/touch_transform_controller.cc
+++ b/ui/display/manager/touch_transform_controller.cc
@@ -110,7 +110,7 @@
 
   // Create a transform matrix using the touch calibration data.
   // clang-format off
-  ctm->ConcatTransform(gfx::Transform(
+  ctm->ConcatTransform(gfx::Transform::RowMajor(
       display_points_x[0], display_points_x[1], 0, display_points_x[2],
       display_points_y[0], display_points_y[1], 0, display_points_y[2],
       0, 0, 1, 0,
diff --git a/ui/gfx/animation/keyframe/keyframed_animation_curve_unittest.cc b/ui/gfx/animation/keyframe/keyframed_animation_curve_unittest.cc
index ffebe9c..addee6e 100644
--- a/ui/gfx/animation/keyframe/keyframed_animation_curve_unittest.cc
+++ b/ui/gfx/animation/keyframe/keyframed_animation_curve_unittest.cc
@@ -276,7 +276,7 @@
 // Tests that a discrete transform animation (e.g. where one or more keyframes
 // is a non-invertible matrix) works as expected.
 TEST(KeyframedAnimationCurveTest, DiscreteLinearTransformAnimation) {
-  gfx::Transform non_invertible_matrix(0, 0, 0, 0, 0, 0);
+  auto non_invertible_matrix = gfx::Transform::Affine(0, 0, 0, 0, 0, 0);
   gfx::Transform identity_matrix;
 
   std::unique_ptr<KeyframedTransformAnimationCurve> curve(
@@ -320,7 +320,7 @@
 }
 
 TEST(KeyframedAnimationCurveTest, DiscreteCubicBezierTransformAnimation) {
-  gfx::Transform non_invertible_matrix(0, 0, 0, 0, 0, 0);
+  auto non_invertible_matrix = gfx::Transform::Affine(0, 0, 0, 0, 0, 0);
   gfx::Transform identity_matrix;
 
   std::unique_ptr<KeyframedTransformAnimationCurve> curve(
diff --git a/ui/gfx/geometry/skia_conversions.cc b/ui/gfx/geometry/skia_conversions.cc
index 0a07b20..d6ee3b4 100644
--- a/ui/gfx/geometry/skia_conversions.cc
+++ b/ui/gfx/geometry/skia_conversions.cc
@@ -88,6 +88,7 @@
 }
 
 SkM44 TransformToSkM44(const Transform& matrix) {
+  // The parameters of this SkM44 constructor are in row-major order.
   return SkM44(
       matrix.rc(0, 0), matrix.rc(0, 1), matrix.rc(0, 2), matrix.rc(0, 3),
       matrix.rc(1, 0), matrix.rc(1, 1), matrix.rc(1, 2), matrix.rc(1, 3),
@@ -95,8 +96,8 @@
       matrix.rc(3, 0), matrix.rc(3, 1), matrix.rc(3, 2), matrix.rc(3, 3));
 }
 
-gfx::Transform SkM44ToTransform(const SkM44& matrix) {
-  return Transform(
+Transform SkM44ToTransform(const SkM44& matrix) {
+  return Transform::RowMajor(
       matrix.rc(0, 0), matrix.rc(0, 1), matrix.rc(0, 2), matrix.rc(0, 3),
       matrix.rc(1, 0), matrix.rc(1, 1), matrix.rc(1, 2), matrix.rc(1, 3),
       matrix.rc(2, 0), matrix.rc(2, 1), matrix.rc(2, 2), matrix.rc(2, 3),
@@ -117,10 +118,11 @@
 }
 
 Transform SkMatrixToTransform(const SkMatrix& matrix) {
-  return Transform(matrix.rc(0, 0), matrix.rc(0, 1), 0, matrix.rc(0, 2),
-                   matrix.rc(1, 0), matrix.rc(1, 1), 0, matrix.rc(1, 2),  //
-                   0, 0, 1, 0,                                            //
-                   matrix.rc(2, 0), matrix.rc(2, 1), 0, matrix.rc(2, 2));
+  return Transform::RowMajor(
+      matrix.rc(0, 0), matrix.rc(0, 1), 0, matrix.rc(0, 2),   // row 0
+      matrix.rc(1, 0), matrix.rc(1, 1), 0, matrix.rc(1, 2),   // row 1
+      0, 0, 1, 0,                                             // row 2
+      matrix.rc(2, 0), matrix.rc(2, 1), 0, matrix.rc(2, 2));  // row 3
 }
 
 }  // namespace gfx
diff --git a/ui/gfx/geometry/transform.cc b/ui/gfx/geometry/transform.cc
index 00aa2d9..f49141c 100644
--- a/ui/gfx/geometry/transform.cc
+++ b/ui/gfx/geometry/transform.cc
@@ -38,37 +38,15 @@
 }  // namespace
 
 // clang-format off
-Transform::Transform(SkScalar col1row1,
-                     SkScalar col2row1,
-                     SkScalar col3row1,
-                     SkScalar col4row1,
-                     SkScalar col1row2,
-                     SkScalar col2row2,
-                     SkScalar col3row2,
-                     SkScalar col4row2,
-                     SkScalar col1row3,
-                     SkScalar col2row3,
-                     SkScalar col3row3,
-                     SkScalar col4row3,
-                     SkScalar col1row4,
-                     SkScalar col2row4,
-                     SkScalar col3row4,
-                     SkScalar col4row4)
-    : matrix_(col1row1, col2row1, col3row1, col4row1,
-              col1row2, col2row2, col3row2, col4row2,
-              col1row3, col2row3, col3row3, col4row3,
-              col1row4, col2row4, col3row4, col4row4) {}
-
-Transform::Transform(SkScalar col1row1,
-                     SkScalar col2row1,
-                     SkScalar col1row2,
-                     SkScalar col2row2,
-                     SkScalar x_translation,
-                     SkScalar y_translation)
-    : matrix_(col1row1, col2row1, 0, x_translation,
-              col1row2, col2row2, 0, y_translation,
-              0, 0, 1, 0,
-              0, 0, 0, 1) {}
+Transform::Transform(SkScalar r0c0, SkScalar r1c0, SkScalar r2c0, SkScalar r3c0,
+                     SkScalar r0c1, SkScalar r1c1, SkScalar r2c1, SkScalar r3c1,
+                     SkScalar r0c2, SkScalar r1c2, SkScalar r2c2, SkScalar r3c2,
+                     SkScalar r0c3, SkScalar r1c3, SkScalar r2c3, SkScalar r3c3)
+    // The parameters of SkMatrix's constructor is in row-major order.
+    : matrix_(r0c0, r0c1, r0c2, r0c3,     // row 0
+              r1c0, r1c1, r1c2, r1c3,     // row 1
+              r2c0, r2c1, r2c2, r2c3,     // row 2
+              r3c0, r3c1, r3c2, r3c3) {}  // row 3
 
 Transform::Transform(const Quaternion& q)
     : matrix_(
diff --git a/ui/gfx/geometry/transform.h b/ui/gfx/geometry/transform.h
index e7d16f0..a43af04 100644
--- a/ui/gfx/geometry/transform.h
+++ b/ui/gfx/geometry/transform.h
@@ -39,44 +39,85 @@
       : matrix_(Matrix44::kUninitialized_Constructor) {}
   Transform(const Transform& rhs) = default;
   Transform& operator=(const Transform& rhs) = default;
-  // Initialize with the concatenation of lhs * rhs.
-  Transform(const Transform& lhs, const Transform& rhs)
-      : matrix_(lhs.matrix_, rhs.matrix_) {}
-  // Constructs a transform from explicit 16 matrix elements. Elements
-  // should be given in row-major order.
-  Transform(SkScalar col1row1,
-            SkScalar col2row1,
-            SkScalar col3row1,
-            SkScalar col4row1,
-            SkScalar col1row2,
-            SkScalar col2row2,
-            SkScalar col3row2,
-            SkScalar col4row2,
-            SkScalar col1row3,
-            SkScalar col2row3,
-            SkScalar col3row3,
-            SkScalar col4row3,
-            SkScalar col1row4,
-            SkScalar col2row4,
-            SkScalar col3row4,
-            SkScalar col4row4);
-  // Constructs a transform from explicit 2d elements. All other matrix
-  // elements remain the same as the corresponding elements of an identity
-  // matrix.
-  Transform(SkScalar col1row1,
-            SkScalar col2row1,
-            SkScalar col1row2,
-            SkScalar col2row2,
-            SkScalar x_translation,
-            SkScalar y_translation);
+
+  // Creates a transform from explicit 16 matrix elements in row-major order.
+  static Transform RowMajor(SkScalar r0c0,
+                            SkScalar r0c1,
+                            SkScalar r0c2,
+                            SkScalar r0c3,
+                            SkScalar r1c0,
+                            SkScalar r1c1,
+                            SkScalar r1c2,
+                            SkScalar r1c3,
+                            SkScalar r2c0,
+                            SkScalar r2c1,
+                            SkScalar r2c2,
+                            SkScalar r2c3,
+                            SkScalar r3c0,
+                            SkScalar r3c1,
+                            SkScalar r3c2,
+                            SkScalar r3c3) {
+    return Transform(r0c0, r1c0, r2c0, r3c0,   // col 0
+                     r0c1, r1c1, r2c1, r3c1,   // col 1
+                     r0c2, r1c2, r2c2, r3c2,   // col 2
+                     r0c3, r1c3, r2c3, r3c3);  // col 3
+  }
+
+  // Creates a transform from explicit 16 matrix elements in col-major order.
+  static Transform ColMajor(SkScalar r0c0,
+                            SkScalar r1c0,
+                            SkScalar r2c0,
+                            SkScalar r3c0,
+                            SkScalar r0c1,
+                            SkScalar r1c1,
+                            SkScalar r2c1,
+                            SkScalar r3c1,
+                            SkScalar r0c2,
+                            SkScalar r1c2,
+                            SkScalar r2c2,
+                            SkScalar r3c2,
+                            SkScalar r0c3,
+                            SkScalar r1c3,
+                            SkScalar r2c3,
+                            SkScalar r3c3) {
+    return Transform(r0c0, r1c0, r2c0, r3c0,   // col 0
+                     r0c1, r1c1, r2c1, r3c1,   // col 1
+                     r0c2, r1c2, r2c2, r3c2,   // col 2
+                     r0c3, r1c3, r2c3, r3c3);  // col 3
+  }
+
+  // Creates a transform from explicit 2d elements. All other matrix elements
+  // remain the same as the corresponding elements of an identity matrix.
+  static Transform Affine(SkScalar r0c0,
+                          SkScalar r0c1,
+                          SkScalar r1c0,
+                          SkScalar r1c1,
+                          SkScalar x_translation,
+                          SkScalar y_translation) {
+    return ColMajor(r0c0, r1c0, 0, 0,                     // col 0
+                    r0c1, r1c1, 0, 0,                     // col 1
+                    0, 0, 1, 0,                           // col 2
+                    x_translation, y_translation, 0, 1);  // col 3
+  }
 
   // Constructs a transform corresponding to the given quaternion.
   explicit Transform(const Quaternion& q);
 
+  // Creates a transform as a 2d translation.
+  static Transform MakeTranslation(SkScalar tx, SkScalar ty) {
+    return Affine(1, 0, 0, 1, tx, ty);
+  }
+  // Creates a transform as a 2d scale.
+  static Transform MakeScale(SkScalar scale) { return MakeScale(scale, scale); }
+  static Transform MakeScale(SkScalar sx, SkScalar sy) {
+    return Affine(sx, 0, 0, sy, 0, 0);
+  }
+
   bool operator==(const Transform& rhs) const { return matrix_ == rhs.matrix_; }
   bool operator!=(const Transform& rhs) const { return matrix_ != rhs.matrix_; }
 
   // Resets this transform to the identity transform.
+  // TODO(crbug.com/1359528): Rename this to SetIdentity or remove it.
   void MakeIdentity() { matrix_.setIdentity(); }
 
   // Gets a value at |row|, |col| from the matrix.
@@ -334,6 +375,28 @@
   std::string ToString() const;
 
  private:
+  // Used internally to construct Transform with parameters in col-major order.
+  Transform(SkScalar r0c0,
+            SkScalar r1c0,
+            SkScalar r2c0,
+            SkScalar r3c0,
+            SkScalar r0c1,
+            SkScalar r1c1,
+            SkScalar r2c1,
+            SkScalar r3c1,
+            SkScalar r0c2,
+            SkScalar r1c2,
+            SkScalar r2c2,
+            SkScalar r3c2,
+            SkScalar r0c3,
+            SkScalar r1c3,
+            SkScalar r2c3,
+            SkScalar r3c3);
+
+  // Initialize with the concatenation of lhs * rhs.
+  Transform(const Transform& lhs, const Transform& rhs)
+      : matrix_(lhs.matrix_, rhs.matrix_) {}
+
   Point TransformPointInternal(const Matrix44& xform, const Point& point) const;
 
   PointF TransformPointInternal(const Matrix44& xform,
diff --git a/ui/gfx/geometry/transform_operations_unittest.cc b/ui/gfx/geometry/transform_operations_unittest.cc
index 613bbff..cee75f6 100644
--- a/ui/gfx/geometry/transform_operations_unittest.cc
+++ b/ui/gfx/geometry/transform_operations_unittest.cc
@@ -914,7 +914,7 @@
 
 TEST(TransformOperationTest, NonDecomposableBlend) {
   TransformOperations non_decomposible_transform;
-  gfx::Transform non_decomposible_matrix(0, 0, 0, 0, 0, 0);
+  auto non_decomposible_matrix = gfx::Transform::Affine(0, 0, 0, 0, 0, 0);
   non_decomposible_transform.AppendMatrix(non_decomposible_matrix);
 
   TransformOperations identity_transform;
diff --git a/ui/gfx/geometry/transform_unittest.cc b/ui/gfx/geometry/transform_unittest.cc
index 738e1b95..94c85bad 100644
--- a/ui/gfx/geometry/transform_unittest.cc
+++ b/ui/gfx/geometry/transform_unittest.cc
@@ -171,7 +171,8 @@
 
 TEST(XFormTest, Equality) {
   Transform lhs, interpolated;
-  Transform rhs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
+  auto rhs = Transform::RowMajor(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+                                 15, 16);
   interpolated = lhs;
   for (int i = 0; i <= 100; ++i) {
     for (int row = 0; row < 4; ++row) {
@@ -201,6 +202,27 @@
   }
 }
 
+// This test is to make it easier to understand the order of operations.
+TEST(XFormTest, PrePostOperations) {
+  auto m1 = Transform::Affine(1, 2, 3, 4, 5, 6);
+  auto m2 = m1;
+  m1.Translate(10, 20);
+  m2.PreconcatTransform(Transform::MakeTranslation(10, 20));
+  EXPECT_EQ(m1, m2);
+
+  m1.PostTranslate(11, 22);
+  m2.ConcatTransform(Transform::MakeTranslation(11, 22));
+  EXPECT_EQ(m1, m2);
+
+  m1.Scale(3, 4);
+  m2.PreconcatTransform(Transform::MakeScale(3, 4));
+  EXPECT_EQ(m1, m2);
+
+  m1.PostScale(5, 6);
+  m2.ConcatTransform(Transform::MakeScale(5, 6));
+  EXPECT_EQ(m1, m2);
+}
+
 TEST(XFormTest, ConcatTranslate) {
   static const struct TestCase {
     int x1;
@@ -1388,8 +1410,9 @@
 }
 
 TEST(XFormTest, verifyConstructorFor16Elements) {
-  Transform transform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0,
-                      12.0, 13.0, 14.0, 15.0, 16.0);
+  auto transform =
+      Transform::RowMajor(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0,
+                          11.0, 12.0, 13.0, 14.0, 15.0, 16.0);
 
   EXPECT_ROW1_EQ(1.0f, 2.0f, 3.0f, 4.0f, transform);
   EXPECT_ROW2_EQ(5.0f, 6.0f, 7.0f, 8.0f, transform);
@@ -1398,7 +1421,7 @@
 }
 
 TEST(XFormTest, verifyConstructorFor2dElements) {
-  Transform transform(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
+  Transform transform = Transform::Affine(1.0, 2.0, 3.0, 4.0, 5.0, 6.0);
 
   EXPECT_ROW1_EQ(1.0f, 2.0f, 0.0f, 5.0f, transform);
   EXPECT_ROW2_EQ(3.0f, 4.0f, 0.0f, 6.0f, transform);
@@ -2706,20 +2729,20 @@
   // be positive.
 
   // clang-format off
-  transform = Transform(1.0, 0.0, 0.0, 0.0,
-                        0.0, 1.0, 0.0, 0.0,
-                        0.0, 0.0, 1.0, 0.0,
-                        0.0, 0.0, 0.0, -1.0);
+  transform = Transform::RowMajor(1.0, 0.0, 0.0, 0.0,
+                                  0.0, 1.0, 0.0, 0.0,
+                                  0.0, 0.0, 1.0, 0.0,
+                                  0.0, 0.0, 0.0, -1.0);
   // clang-format on
   EXPECT_TRUE(EmpiricallyPreserves2dAxisAlignment(transform));
   EXPECT_TRUE(transform.Preserves2dAxisAlignment());
   EXPECT_FALSE(transform.NonDegeneratePreserves2dAxisAlignment());
 
   // clang-format off
-  transform = Transform(2.0, 0.0, 0.0, 0.0,
-                        0.0, 5.0, 0.0, 0.0,
-                        0.0, 0.0, 1.0, 0.0,
-                        0.0, 0.0, 0.0, 0.0);
+  transform = Transform::RowMajor(2.0, 0.0, 0.0, 0.0,
+                                  0.0, 5.0, 0.0, 0.0,
+                                  0.0, 0.0, 1.0, 0.0,
+                                  0.0, 0.0, 0.0, 0.0);
   // clang-format on
   EXPECT_TRUE(EmpiricallyPreserves2dAxisAlignment(transform));
   EXPECT_TRUE(transform.Preserves2dAxisAlignment());
diff --git a/ui/gfx/geometry/transform_util_unittest.cc b/ui/gfx/geometry/transform_util_unittest.cc
index ebe85e12..15f79c79 100644
--- a/ui/gfx/geometry/transform_util_unittest.cc
+++ b/ui/gfx/geometry/transform_util_unittest.cc
@@ -233,29 +233,32 @@
 
 TEST(TransformUtilTest, RoundTripTest) {
   // rotateZ(90deg)
-  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform(0, 1, -1, 0, 0, 0)));
+  EXPECT_APPROX_EQ(
+      0, ComputeDecompRecompError(Transform::Affine(0, 1, -1, 0, 0, 0)));
 
   // rotateZ(180deg)
   // Edge case where w = 0.
-  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform(-1, 0, 0, -1, 0, 0)));
+  EXPECT_APPROX_EQ(
+      0, ComputeDecompRecompError(Transform::Affine(-1, 0, 0, -1, 0, 0)));
 
   // rotateX(90deg) rotateY(90deg) rotateZ(90deg)
   // [1  0   0][ 0 0 1][0 -1 0]   [0 0 1][0 -1 0]   [0  0 1]
   // [0  0  -1][ 0 1 0][1  0 0] = [1 0 0][1  0 0] = [0 -1 0]
   // [0  1   0][-1 0 0][0  0 1]   [0 1 0][0  0 1]   [1  0 0]
   // This test case leads to Gimbal lock when using Euler angles.
-  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform(
+  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform::RowMajor(
                           0, 0, 1, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1)));
 
   // Quaternion matrices with 0 off-diagonal elements, and negative trace.
   // Stress tests handling of degenerate cases in computing quaternions.
   // Validates fix for https://crbug.com/647554.
-  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform(1, 1, 1, 0, 0, 0)));
-  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform(
+  EXPECT_APPROX_EQ(
+      0, ComputeDecompRecompError(Transform::Affine(1, 1, 1, 0, 0, 0)));
+  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform::RowMajor(
                           -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)));
-  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform(
+  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform::RowMajor(
                           1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)));
-  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform(
+  EXPECT_APPROX_EQ(0, ComputeDecompRecompError(Transform::RowMajor(
                           1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1)));
 }
 
@@ -269,7 +272,7 @@
   // multiple axes.  2D transformation matrices should follow the 2D spec
   // regarding matrix decomposition.
   DecomposedTransform decompFlipX;
-  DecomposeTransform(&decompFlipX, Transform(-1, 0, 0, 1, 0, 0));
+  DecomposeTransform(&decompFlipX, Transform::Affine(-1, 0, 0, 1, 0, 0));
   EXPECT_APPROX_EQ(-1, decompFlipX.scale[0]);
   EXPECT_APPROX_EQ(1, decompFlipX.scale[1]);
   EXPECT_APPROX_EQ(1, decompFlipX.scale[2]);
@@ -277,7 +280,7 @@
   EXPECT_APPROX_EQ(1, decompFlipX.quaternion.w());
 
   DecomposedTransform decompFlipY;
-  DecomposeTransform(&decompFlipY, Transform(1, 0, 0, -1, 0, 0));
+  DecomposeTransform(&decompFlipY, Transform::Affine(1, 0, 0, -1, 0, 0));
   EXPECT_APPROX_EQ(1, decompFlipY.scale[0]);
   EXPECT_APPROX_EQ(-1, decompFlipY.scale[1]);
   EXPECT_APPROX_EQ(1, decompFlipY.scale[2]);
@@ -285,7 +288,7 @@
   EXPECT_APPROX_EQ(1, decompFlipY.quaternion.w());
 
   DecomposedTransform decompR180;
-  DecomposeTransform(&decompR180, Transform(-1, 0, 0, -1, 0, 0));
+  DecomposeTransform(&decompR180, Transform::Affine(-1, 0, 0, -1, 0, 0));
   EXPECT_APPROX_EQ(1, decompR180.scale[0]);
   EXPECT_APPROX_EQ(1, decompR180.scale[1]);
   EXPECT_APPROX_EQ(1, decompR180.scale[2]);
@@ -293,7 +296,7 @@
   EXPECT_APPROX_EQ(0, decompR180.quaternion.w());
 
   DecomposedTransform decompR90;
-  DecomposeTransform(&decompR180, Transform(0, -1, 1, 0, 0, 0));
+  DecomposeTransform(&decompR180, Transform::Affine(0, -1, 1, 0, 0, 0));
   EXPECT_APPROX_EQ(1, decompR180.scale[0]);
   EXPECT_APPROX_EQ(1, decompR180.scale[1]);
   EXPECT_APPROX_EQ(1, decompR180.scale[2]);
@@ -301,7 +304,8 @@
   EXPECT_APPROX_EQ(1 / sqrt(2), decompR180.quaternion.w());
 
   DecomposedTransform decompR90Translate;
-  DecomposeTransform(&decompR90Translate, Transform(0, -1, 1, 0, -1, 1));
+  DecomposeTransform(&decompR90Translate,
+                     Transform::Affine(0, -1, 1, 0, -1, 1));
   EXPECT_APPROX_EQ(1, decompR90Translate.scale[0]);
   EXPECT_APPROX_EQ(1, decompR90Translate.scale[1]);
   EXPECT_APPROX_EQ(1, decompR90Translate.scale[2]);
@@ -312,7 +316,7 @@
   EXPECT_APPROX_EQ(1 / sqrt(2), decompR90Translate.quaternion.w());
 
   DecomposedTransform decompSkewRotate;
-  DecomposeTransform(&decompR90Translate, Transform(1, 1, 1, 0, 0, 0));
+  DecomposeTransform(&decompR90Translate, Transform::Affine(1, 1, 1, 0, 0, 0));
   EXPECT_APPROX_EQ(sqrt(2), decompR90Translate.scale[0]);
   EXPECT_APPROX_EQ(-1 / sqrt(2), decompR90Translate.scale[1]);
   EXPECT_APPROX_EQ(1, decompR90Translate.scale[2]);
@@ -371,80 +375,80 @@
   } tests[] = {
       // clang-format off
       // A matrix with only scale and translation.
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, 0, 1),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, 0, 1),
        Vector2dF(3, 7)},
       // Matrices like the first, but also with various
       // perspective-altering components.
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, -0.5, 1),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, -0.5, 1),
        Vector2dF(3, 7)},
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0.2f, 0, -0.5f, 1),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0.2f, 0, -0.5f, 1),
        absl::nullopt},
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0.2f, -0.2f, -0.5f, 1),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0.2f, -0.2f, -0.5f, 1),
        absl::nullopt},
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0.2f, -0.2f, -0.5f, 1),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0.2f, -0.2f, -0.5f, 1),
        absl::nullopt},
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0, -0.2f, -0.5f, 1),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0, -0.2f, -0.5f, 1),
        absl::nullopt},
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, -0.5f, 0.25f),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, -0.5f, 0.25f),
        Vector2dF(12, 28)},
       // Matrices like the first, but with some types of rotation.
-      {Transform(0, 3, 0, -23,
-                 7, 0, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, 0, 1),
+      {Transform::RowMajor(0, 3, 0, -23,
+                           7, 0, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, 0, 1),
        Vector2dF(7, 3)},
-      {Transform(3, 8, 0, -23,
-                 4, 6, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, 0, 1),
+      {Transform::RowMajor(3, 8, 0, -23,
+                           4, 6, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, 0, 1),
        Vector2dF(5, 10)},
       // Combination of rotation and perspective
-      {Transform(3, 8, 0, -23,
-                 4, 6, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, 0, 0.25f),
+      {Transform::RowMajor(3, 8, 0, -23,
+                           4, 6, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, 0, 0.25f),
        Vector2dF(20, 40)},
       // Error handling cases for final perspective component.
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, 0, 0),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, 0, 0),
        absl::nullopt},
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, 0, quiet_NaN_or_zero),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, 0, quiet_NaN_or_zero),
        absl::nullopt},
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, 0, infinity_or_zero),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, 0, infinity_or_zero),
        absl::nullopt},
-      {Transform(3, 0, 0, -23,
-                 0, 7, 0, 31,
-                 0, 0, 11, 47,
-                 0, 0, 0, denorm_min_or_zero),
+      {Transform::RowMajor(3, 0, 0, -23,
+                           0, 7, 0, 31,
+                           0, 0, 11, 47,
+                           0, 0, 0, denorm_min_or_zero),
        absl::nullopt},
       // clang-format on
   };
diff --git a/ui/gfx/mojom/mojom_traits_unittest.cc b/ui/gfx/mojom/mojom_traits_unittest.cc
index 527cbb4d..3d4008b3 100644
--- a/ui/gfx/mojom/mojom_traits_unittest.cc
+++ b/ui/gfx/mojom/mojom_traits_unittest.cc
@@ -95,45 +95,44 @@
 }
 
 TEST_F(StructTraitsTest, Transform) {
-  const float col1row1 = 1.f;
-  const float col2row1 = 2.f;
-  const float col3row1 = 3.f;
-  const float col4row1 = 4.f;
-  const float col1row2 = 5.f;
-  const float col2row2 = 6.f;
-  const float col3row2 = 7.f;
-  const float col4row2 = 8.f;
-  const float col1row3 = 9.f;
-  const float col2row3 = 10.f;
-  const float col3row3 = 11.f;
-  const float col4row3 = 12.f;
-  const float col1row4 = 13.f;
-  const float col2row4 = 14.f;
-  const float col3row4 = 15.f;
-  const float col4row4 = 16.f;
-  gfx::Transform input(col1row1, col2row1, col3row1, col4row1, col1row2,
-                       col2row2, col3row2, col4row2, col1row3, col2row3,
-                       col3row3, col4row3, col1row4, col2row4, col3row4,
-                       col4row4);
+  const float r0c0 = 1.f;
+  const float r0c1 = 2.f;
+  const float r0c2 = 3.f;
+  const float r0c3 = 4.f;
+  const float r1c0 = 5.f;
+  const float r1c1 = 6.f;
+  const float r1c2 = 7.f;
+  const float r1c3 = 8.f;
+  const float r2c0 = 9.f;
+  const float r2c1 = 10.f;
+  const float r2c2 = 11.f;
+  const float r2c3 = 12.f;
+  const float r3c0 = 13.f;
+  const float r3c1 = 14.f;
+  const float r3c2 = 15.f;
+  const float r3c3 = 16.f;
+  auto input =
+      gfx::Transform::RowMajor(r0c0, r0c1, r0c2, r0c3, r1c0, r1c1, r1c2, r1c3,
+                               r2c0, r2c1, r2c2, r2c3, r3c0, r3c1, r3c2, r3c3);
   mojo::Remote<mojom::TraitsTestService> remote = GetTraitsTestRemote();
   gfx::Transform output;
   remote->EchoTransform(input, &output);
-  EXPECT_EQ(col1row1, output.rc(0, 0));
-  EXPECT_EQ(col2row1, output.rc(0, 1));
-  EXPECT_EQ(col3row1, output.rc(0, 2));
-  EXPECT_EQ(col4row1, output.rc(0, 3));
-  EXPECT_EQ(col1row2, output.rc(1, 0));
-  EXPECT_EQ(col2row2, output.rc(1, 1));
-  EXPECT_EQ(col3row2, output.rc(1, 2));
-  EXPECT_EQ(col4row2, output.rc(1, 3));
-  EXPECT_EQ(col1row3, output.rc(2, 0));
-  EXPECT_EQ(col2row3, output.rc(2, 1));
-  EXPECT_EQ(col3row3, output.rc(2, 2));
-  EXPECT_EQ(col4row3, output.rc(2, 3));
-  EXPECT_EQ(col1row4, output.rc(3, 0));
-  EXPECT_EQ(col2row4, output.rc(3, 1));
-  EXPECT_EQ(col3row4, output.rc(3, 2));
-  EXPECT_EQ(col4row4, output.rc(3, 3));
+  EXPECT_EQ(r0c0, output.rc(0, 0));
+  EXPECT_EQ(r0c1, output.rc(0, 1));
+  EXPECT_EQ(r0c2, output.rc(0, 2));
+  EXPECT_EQ(r0c3, output.rc(0, 3));
+  EXPECT_EQ(r1c0, output.rc(1, 0));
+  EXPECT_EQ(r1c1, output.rc(1, 1));
+  EXPECT_EQ(r1c2, output.rc(1, 2));
+  EXPECT_EQ(r1c3, output.rc(1, 3));
+  EXPECT_EQ(r2c0, output.rc(2, 0));
+  EXPECT_EQ(r2c1, output.rc(2, 1));
+  EXPECT_EQ(r2c2, output.rc(2, 2));
+  EXPECT_EQ(r2c3, output.rc(2, 3));
+  EXPECT_EQ(r3c0, output.rc(3, 0));
+  EXPECT_EQ(r3c1, output.rc(3, 1));
+  EXPECT_EQ(r3c2, output.rc(3, 2));
+  EXPECT_EQ(r3c3, output.rc(3, 3));
 }
 
 TEST_F(StructTraitsTest, AcceleratedWidget) {
diff --git a/ui/gl/direct_composition_child_surface_win.cc b/ui/gl/direct_composition_child_surface_win.cc
index 6efb589..17f28a2 100644
--- a/ui/gl/direct_composition_child_surface_win.cc
+++ b/ui/gl/direct_composition_child_surface_win.cc
@@ -11,9 +11,9 @@
 #include "base/debug/dump_without_crashing.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/notreached.h"
 #include "base/process/process.h"
 #include "base/synchronization/waitable_event.h"
-#include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
 #include "base/trace_event/traced_value.h"
 #include "base/win/windows_version.h"
@@ -27,8 +27,6 @@
 #include "ui/gl/gl_surface_egl.h"
 #include "ui/gl/gl_switches.h"
 #include "ui/gl/gl_utils.h"
-#include "ui/gl/scoped_make_current.h"
-#include "ui/gl/vsync_thread_win.h"
 
 #ifndef EGL_ANGLE_d3d_texture_client_buffer
 #define EGL_ANGLE_d3d_texture_client_buffer 1
@@ -52,11 +50,6 @@
 const char* kDirectCompositionChildSurfaceLabel =
     "DirectCompositionChildSurface";
 
-bool SupportsLowLatencyPresentation() {
-  return base::FeatureList::IsEnabled(
-      features::kDirectCompositionLowLatencyPresentation);
-}
-
 bool IsVerifyDrawOffsetEnabled() {
   return base::FeatureList::IsEnabled(
       features::kDirectCompositionVerifyDrawOffset);
@@ -75,32 +68,15 @@
 
 }  // namespace
 
-DirectCompositionChildSurfaceWin::PendingFrame::PendingFrame(
-    Microsoft::WRL::ComPtr<ID3D11Query> query,
-    PresentationCallback callback)
-    : query(std::move(query)), callback(std::move(callback)) {}
-DirectCompositionChildSurfaceWin::PendingFrame::PendingFrame(
-    PendingFrame&& other) = default;
-DirectCompositionChildSurfaceWin::PendingFrame::~PendingFrame() = default;
-DirectCompositionChildSurfaceWin::PendingFrame&
-DirectCompositionChildSurfaceWin::PendingFrame::operator=(
-    PendingFrame&& other) = default;
-
 DirectCompositionChildSurfaceWin::DirectCompositionChildSurfaceWin(
     GLDisplayEGL* display,
-    VSyncCallback vsync_callback,
     bool use_angle_texture_offset,
-    size_t max_pending_frames,
     bool force_full_damage,
     bool force_full_damage_always)
     : GLSurfaceEGL(display),
-      vsync_callback_(std::move(vsync_callback)),
       use_angle_texture_offset_(use_angle_texture_offset),
-      max_pending_frames_(max_pending_frames),
       force_full_damage_(force_full_damage),
-      force_full_damage_always_(force_full_damage_always),
-      vsync_thread_(VSyncThreadWin::GetInstance()),
-      task_runner_(base::ThreadTaskRunnerHandle::Get()) {}
+      force_full_damage_always_(force_full_damage_always) {}
 
 DirectCompositionChildSurfaceWin::~DirectCompositionChildSurfaceWin() {
   Destroy();
@@ -249,13 +225,6 @@
 }
 
 void DirectCompositionChildSurfaceWin::Destroy() {
-  for (auto& frame : pending_frames_)
-    std::move(frame.callback).Run(gfx::PresentationFeedback::Failure());
-  pending_frames_.clear();
-
-  if (vsync_thread_started_)
-    vsync_thread_->RemoveObserver(this);
-
   if (default_surface_) {
     if (!eglDestroySurface(display_->GetDisplay(), default_surface_)) {
       DLOG(ERROR) << "eglDestroySurface failed with error "
@@ -296,19 +265,23 @@
 
 gfx::SwapResult DirectCompositionChildSurfaceWin::SwapBuffers(
     PresentationCallback callback) {
-  TRACE_EVENT1("gpu", "DirectCompositionChildSurfaceWin::SwapBuffers", "size",
+  NOTREACHED();
+  return gfx::SwapResult::SWAP_FAILED;
+}
+
+bool DirectCompositionChildSurfaceWin::EndDraw(gfx::Rect* swap_rect) {
+  TRACE_EVENT1("gpu", "DirectCompositionChildSurfaceWin::EndDraw", "size",
                size_.ToString());
 
-  gfx::SwapResult swap_result = ReleaseDrawTexture(false /* will_discard */)
-                                    ? gfx::SwapResult::SWAP_ACK
-                                    : gfx::SwapResult::SWAP_FAILED;
-  EnqueuePendingFrame(std::move(callback));
+  bool success = ReleaseDrawTexture(false /* will_discard */);
+
+  *swap_rect = swap_rect_;
 
   // Reset swap_rect_ since SetDrawRectangle may not be called when the root
   // damage rect is empty.
   swap_rect_ = gfx::Rect();
 
-  return swap_result;
+  return success;
 }
 
 gfx::SurfaceOrigin DirectCompositionChildSurfaceWin::GetOrigin() const {
@@ -617,128 +590,6 @@
   return true;
 }
 
-gfx::VSyncProvider* DirectCompositionChildSurfaceWin::GetVSyncProvider() {
-  return vsync_thread_->vsync_provider();
-}
-
-bool DirectCompositionChildSurfaceWin::SupportsGpuVSync() const {
-  return true;
-}
-
-void DirectCompositionChildSurfaceWin::SetGpuVSyncEnabled(bool enabled) {
-  {
-    base::AutoLock auto_lock(vsync_callback_enabled_lock_);
-    vsync_callback_enabled_ = enabled;
-  }
-  StartOrStopVSyncThread();
-}
-
-void DirectCompositionChildSurfaceWin::OnVSync(base::TimeTicks vsync_time,
-                                               base::TimeDelta interval) {
-  // Main thread will run vsync callback in low latency presentation mode.
-  if (VSyncCallbackEnabled() && !SupportsLowLatencyPresentation()) {
-    DCHECK(vsync_callback_);
-    vsync_callback_.Run(vsync_time, interval);
-  }
-
-  task_runner_->PostTask(
-      FROM_HERE,
-      base::BindOnce(&DirectCompositionChildSurfaceWin::HandleVSyncOnMainThread,
-                     weak_factory_.GetWeakPtr(), vsync_time, interval));
-}
-
-void DirectCompositionChildSurfaceWin::HandleVSyncOnMainThread(
-    base::TimeTicks vsync_time,
-    base::TimeDelta interval) {
-  last_vsync_time_ = vsync_time;
-  last_vsync_interval_ = interval;
-
-  CheckPendingFrames();
-
-  UMA_HISTOGRAM_COUNTS_100("GPU.DirectComposition.NumPendingFrames",
-                           pending_frames_.size());
-
-  if (SupportsLowLatencyPresentation() && VSyncCallbackEnabled() &&
-      pending_frames_.size() < max_pending_frames_) {
-    DCHECK(vsync_callback_);
-    vsync_callback_.Run(vsync_time, interval);
-  }
-}
-
-void DirectCompositionChildSurfaceWin::StartOrStopVSyncThread() {
-  bool start_vsync_thread = VSyncCallbackEnabled() || !pending_frames_.empty();
-  if (vsync_thread_started_ == start_vsync_thread)
-    return;
-  vsync_thread_started_ = start_vsync_thread;
-  if (start_vsync_thread) {
-    vsync_thread_->AddObserver(this);
-  } else {
-    vsync_thread_->RemoveObserver(this);
-  }
-}
-
-bool DirectCompositionChildSurfaceWin::VSyncCallbackEnabled() const {
-  base::AutoLock auto_lock(vsync_callback_enabled_lock_);
-  return vsync_callback_enabled_;
-}
-
-void DirectCompositionChildSurfaceWin::CheckPendingFrames() {
-  TRACE_EVENT1("gpu", "DirectCompositionChildSurfaceWin::CheckPendingFrames",
-               "num_pending_frames", pending_frames_.size());
-
-  if (pending_frames_.empty())
-    return;
-
-  Microsoft::WRL::ComPtr<ID3D11DeviceContext> context;
-  d3d11_device_->GetImmediateContext(&context);
-  while (!pending_frames_.empty()) {
-    auto& frame = pending_frames_.front();
-    // Query isn't created if there was no damage for previous frame.
-    if (frame.query) {
-      HRESULT hr = context->GetData(frame.query.Get(), nullptr, 0,
-                                    D3D11_ASYNC_GETDATA_DONOTFLUSH);
-      // When the GPU completes execution past the event query, GetData() will
-      // return S_OK, and S_FALSE otherwise.  Do not use SUCCEEDED() because
-      // S_FALSE is also a success code.
-      if (hr != S_OK)
-        break;
-    }
-    std::move(frame.callback)
-        .Run(
-            gfx::PresentationFeedback(last_vsync_time_, last_vsync_interval_,
-                                      gfx::PresentationFeedback::kVSync |
-                                          gfx::PresentationFeedback::kHWClock));
-    pending_frames_.pop_front();
-  }
-
-  StartOrStopVSyncThread();
-}
-
-void DirectCompositionChildSurfaceWin::EnqueuePendingFrame(
-    PresentationCallback callback) {
-  Microsoft::WRL::ComPtr<ID3D11Query> query;
-
-  // Do not create query for empty damage so that 3D engine is not used when
-  // only presenting video in overlay. Callback will be dequeued on next vsync.
-  if (!swap_rect_.IsEmpty()) {
-    D3D11_QUERY_DESC desc = {};
-    desc.Query = D3D11_QUERY_EVENT;
-    HRESULT hr = d3d11_device_->CreateQuery(&desc, &query);
-    if (SUCCEEDED(hr)) {
-      Microsoft::WRL::ComPtr<ID3D11DeviceContext> context;
-      d3d11_device_->GetImmediateContext(&context);
-      context->End(query.Get());
-      context->Flush();
-    } else {
-      DLOG(ERROR) << "CreateQuery failed with error 0x" << std::hex << hr;
-    }
-  }
-
-  pending_frames_.emplace_back(std::move(query), std::move(callback));
-
-  StartOrStopVSyncThread();
-}
-
 Microsoft::WRL::ComPtr<ID3D11Texture2D>
 DirectCompositionChildSurfaceWin::GetOffscreenTexture() {
   if (!dcomp_surface_) {
diff --git a/ui/gl/direct_composition_child_surface_win.h b/ui/gl/direct_composition_child_surface_win.h
index 3eff525..4864f8d4 100644
--- a/ui/gl/direct_composition_child_surface_win.h
+++ b/ui/gl/direct_composition_child_surface_win.h
@@ -10,32 +10,15 @@
 #include <dcomp.h>
 #include <wrl/client.h>
 
-#include "base/callback.h"
-#include "base/containers/circular_deque.h"
-#include "base/memory/raw_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/synchronization/lock.h"
-#include "base/time/time.h"
 #include "ui/gl/gl_export.h"
 #include "ui/gl/gl_surface_egl.h"
-#include "ui/gl/vsync_observer.h"
-
-namespace base {
-class SequencedTaskRunner;
-}  // namespace base
 
 namespace gl {
-class VSyncThreadWin;
 
-class GL_EXPORT DirectCompositionChildSurfaceWin : public GLSurfaceEGL,
-                                                   public VSyncObserver {
+class GL_EXPORT DirectCompositionChildSurfaceWin : public GLSurfaceEGL {
  public:
-  using VSyncCallback =
-      base::RepeatingCallback<void(base::TimeTicks, base::TimeDelta)>;
   DirectCompositionChildSurfaceWin(GLDisplayEGL* display,
-                                   VSyncCallback vsync_callback,
                                    bool use_angle_texture_offset,
-                                   size_t max_pending_frames,
                                    bool force_full_damage,
                                    bool force_full_damage_always);
 
@@ -63,12 +46,13 @@
               const gfx::ColorSpace& color_space,
               bool has_alpha) override;
   bool SetEnableDCLayers(bool enable) override;
-  gfx::VSyncProvider* GetVSyncProvider() override;
-  bool SupportsGpuVSync() const override;
-  void SetGpuVSyncEnabled(bool enabled) override;
 
-  // VSyncObserver implementation.
-  void OnVSync(base::TimeTicks vsync_time, base::TimeDelta interval) override;
+  // Finish a draw started by |SetDrawRectangle|. Internally, calls presents the
+  // swap chain or calls |EndDraw| on the DComp surface.
+  //
+  // Returns true on success. |swap_rect| will contain the portion of the
+  // surface we're flipping (originally passed in via SetDrawRectangle).
+  bool EndDraw(gfx::Rect* swap_rect);
 
   static bool IsDirectCompositionSwapChainFailed();
 
@@ -89,30 +73,6 @@
   ~DirectCompositionChildSurfaceWin() override;
 
  private:
-  struct PendingFrame {
-    PendingFrame(Microsoft::WRL::ComPtr<ID3D11Query> query,
-                 PresentationCallback callback);
-    PendingFrame(PendingFrame&& other);
-    ~PendingFrame();
-    PendingFrame& operator=(PendingFrame&& other);
-
-    // Event query issued after frame is presented.
-    Microsoft::WRL::ComPtr<ID3D11Query> query;
-
-    // Presentation callback enqueued in SwapBuffers().
-    PresentationCallback callback;
-  };
-
-  void EnqueuePendingFrame(PresentationCallback callback);
-  void CheckPendingFrames();
-
-  void StartOrStopVSyncThread();
-
-  bool VSyncCallbackEnabled() const;
-
-  void HandleVSyncOnMainThread(base::TimeTicks vsync_time,
-                               base::TimeDelta interval);
-
   // Release the texture that's currently being drawn to. If will_discard is
   // true then the surface should be discarded without swapping any contents
   // to it. Returns false if this fails.
@@ -154,26 +114,9 @@
   // verify a draw offset bug.
   Microsoft::WRL::ComPtr<ID3D11Texture2D> offscreen_texture_;
 
-  const VSyncCallback vsync_callback_;
   const bool use_angle_texture_offset_;
-  const size_t max_pending_frames_;
   const bool force_full_damage_;
   const bool force_full_damage_always_;
-
-  const raw_ptr<VSyncThreadWin> vsync_thread_;
-  scoped_refptr<base::SequencedTaskRunner> task_runner_;
-
-  bool vsync_thread_started_ = false;
-  bool vsync_callback_enabled_ GUARDED_BY(vsync_callback_enabled_lock_) = false;
-  mutable base::Lock vsync_callback_enabled_lock_;
-
-  // Queue of pending presentation callbacks.
-  base::circular_deque<PendingFrame> pending_frames_;
-
-  base::TimeTicks last_vsync_time_;
-  base::TimeDelta last_vsync_interval_;
-
-  base::WeakPtrFactory<DirectCompositionChildSurfaceWin> weak_factory_{this};
 };
 
 }  // namespace gl
diff --git a/ui/gl/direct_composition_surface_win.cc b/ui/gl/direct_composition_surface_win.cc
index dc1c1b3..0921e8de 100644
--- a/ui/gl/direct_composition_surface_win.cc
+++ b/ui/gl/direct_composition_surface_win.cc
@@ -8,13 +8,40 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/functional/callback_helpers.h"
+#include "base/metrics/histogram_macros.h"
+#include "base/threading/thread_task_runner_handle.h"
 #include "base/trace_event/trace_event.h"
+#include "ui/gfx/presentation_feedback.h"
+#include "ui/gfx/swap_result.h"
 #include "ui/gl/dc_layer_tree.h"
 #include "ui/gl/direct_composition_child_surface_win.h"
 #include "ui/gl/direct_composition_support.h"
+#include "ui/gl/gl_angle_util_win.h"
+#include "ui/gl/vsync_thread_win.h"
 
 namespace gl {
 
+namespace {
+
+bool SupportsLowLatencyPresentation() {
+  return base::FeatureList::IsEnabled(
+      features::kDirectCompositionLowLatencyPresentation);
+}
+
+}  // namespace
+
+DirectCompositionSurfaceWin::PendingFrame::PendingFrame(
+    Microsoft::WRL::ComPtr<ID3D11Query> query,
+    PresentationCallback callback)
+    : query(std::move(query)), callback(std::move(callback)) {}
+DirectCompositionSurfaceWin::PendingFrame::PendingFrame(PendingFrame&& other) =
+    default;
+DirectCompositionSurfaceWin::PendingFrame::~PendingFrame() = default;
+DirectCompositionSurfaceWin::PendingFrame&
+DirectCompositionSurfaceWin::PendingFrame::operator=(PendingFrame&& other) =
+    default;
+
 DirectCompositionSurfaceWin::DirectCompositionSurfaceWin(
     GLDisplayEGL* display,
     HWND parent_window,
@@ -22,11 +49,13 @@
     const Settings& settings)
     : GLSurfaceEGL(display),
       child_window_(parent_window),
+      vsync_callback_(std::move(vsync_callback)),
+      vsync_thread_(VSyncThreadWin::GetInstance()),
+      task_runner_(base::ThreadTaskRunnerHandle::Get()),
+      max_pending_frames_(settings.max_pending_frames),
       root_surface_(new DirectCompositionChildSurfaceWin(
           display,
-          std::move(vsync_callback),
           settings.use_angle_texture_offset,
-          settings.max_pending_frames,
           settings.force_root_surface_full_damage,
           settings.force_root_surface_full_damage_always)),
       layer_tree_(std::make_unique<DCLayerTree>(
@@ -45,6 +74,8 @@
     return false;
   }
 
+  d3d11_device_ = QueryD3D11DeviceObjectFromANGLE();
+
   child_window_.Initialize();
 
   window_ = child_window_.window();
@@ -59,6 +90,13 @@
 }
 
 void DirectCompositionSurfaceWin::Destroy() {
+  for (auto& frame : pending_frames_)
+    std::move(frame.callback).Run(gfx::PresentationFeedback::Failure());
+  pending_frames_.clear();
+
+  if (vsync_thread_started_)
+    vsync_thread_->RemoveObserver(this);
+
   root_surface_->Destroy();
   // Freeing DComp resources such as visuals and surfaces causes the
   // device to become 'dirty'. We must commit the changes to the device
@@ -100,8 +138,13 @@
     PresentationCallback callback) {
   TRACE_EVENT0("gpu", "DirectCompositionSurfaceWin::SwapBuffers");
 
-  if (root_surface_->SwapBuffers(std::move(callback)) !=
-      gfx::SwapResult::SWAP_ACK)
+  gfx::Rect swap_rect;
+  bool success = root_surface_->EndDraw(&swap_rect);
+  // Do not create query for empty damage so that 3D engine is not used when
+  // only presenting video in overlay. Callback will be dequeued on next vsync.
+  EnqueuePendingFrame(std::move(callback),
+                      /*create_query=*/!swap_rect.IsEmpty());
+  if (!success)
     return gfx::SwapResult::SWAP_FAILED;
 
   if (!layer_tree_->CommitAndClearPendingOverlays(root_surface_.get()))
@@ -122,13 +165,27 @@
 }
 
 gfx::VSyncProvider* DirectCompositionSurfaceWin::GetVSyncProvider() {
-  return root_surface_->GetVSyncProvider();
+  return vsync_thread_->vsync_provider();
 }
 
 void DirectCompositionSurfaceWin::SetVSyncEnabled(bool enabled) {
   root_surface_->SetVSyncEnabled(enabled);
 }
 
+void DirectCompositionSurfaceWin::OnVSync(base::TimeTicks vsync_time,
+                                          base::TimeDelta interval) {
+  // Main thread will run vsync callback in low latency presentation mode.
+  if (VSyncCallbackEnabled() && !SupportsLowLatencyPresentation()) {
+    DCHECK(vsync_callback_);
+    vsync_callback_.Run(vsync_time, interval);
+  }
+
+  task_runner_->PostTask(
+      FROM_HERE,
+      base::BindOnce(&DirectCompositionSurfaceWin::HandleVSyncOnMainThread,
+                     weak_factory_.GetWeakPtr(), vsync_time, interval));
+}
+
 bool DirectCompositionSurfaceWin::ScheduleDCLayer(
     std::unique_ptr<ui::DCRendererLayerParams> params) {
   return layer_tree_->ScheduleDCLayer(std::move(params));
@@ -182,7 +239,11 @@
 }
 
 void DirectCompositionSurfaceWin::SetGpuVSyncEnabled(bool enabled) {
-  root_surface_->SetGpuVSyncEnabled(enabled);
+  {
+    base::AutoLock auto_lock(vsync_callback_enabled_lock_);
+    vsync_callback_enabled_ = enabled;
+  }
+  StartOrStopVSyncThread();
 }
 
 bool DirectCompositionSurfaceWin::SupportsDelegatedInk() {
@@ -230,4 +291,94 @@
       index, transform, offset, clip_rect);
 }
 
+void DirectCompositionSurfaceWin::HandleVSyncOnMainThread(
+    base::TimeTicks vsync_time,
+    base::TimeDelta interval) {
+  last_vsync_time_ = vsync_time;
+  last_vsync_interval_ = interval;
+
+  CheckPendingFrames();
+
+  UMA_HISTOGRAM_COUNTS_100("GPU.DirectComposition.NumPendingFrames",
+                           pending_frames_.size());
+
+  if (SupportsLowLatencyPresentation() && VSyncCallbackEnabled() &&
+      pending_frames_.size() < max_pending_frames_) {
+    DCHECK(vsync_callback_);
+    vsync_callback_.Run(vsync_time, interval);
+  }
+}
+
+void DirectCompositionSurfaceWin::StartOrStopVSyncThread() {
+  bool start_vsync_thread = VSyncCallbackEnabled() || !pending_frames_.empty();
+  if (vsync_thread_started_ == start_vsync_thread)
+    return;
+  vsync_thread_started_ = start_vsync_thread;
+  if (start_vsync_thread) {
+    vsync_thread_->AddObserver(this);
+  } else {
+    vsync_thread_->RemoveObserver(this);
+  }
+}
+
+bool DirectCompositionSurfaceWin::VSyncCallbackEnabled() const {
+  base::AutoLock auto_lock(vsync_callback_enabled_lock_);
+  return vsync_callback_enabled_;
+}
+
+void DirectCompositionSurfaceWin::CheckPendingFrames() {
+  TRACE_EVENT1("gpu", "DirectCompositionSurfaceWin::CheckPendingFrames",
+               "num_pending_frames", pending_frames_.size());
+
+  if (pending_frames_.empty())
+    return;
+
+  Microsoft::WRL::ComPtr<ID3D11DeviceContext> context;
+  d3d11_device_->GetImmediateContext(&context);
+  while (!pending_frames_.empty()) {
+    auto& frame = pending_frames_.front();
+    // Query isn't created if there was no damage for previous frame.
+    if (frame.query) {
+      HRESULT hr = context->GetData(frame.query.Get(), nullptr, 0,
+                                    D3D11_ASYNC_GETDATA_DONOTFLUSH);
+      // When the GPU completes execution past the event query, GetData() will
+      // return S_OK, and S_FALSE otherwise.  Do not use SUCCEEDED() because
+      // S_FALSE is also a success code.
+      if (hr != S_OK)
+        break;
+    }
+    std::move(frame.callback)
+        .Run(
+            gfx::PresentationFeedback(last_vsync_time_, last_vsync_interval_,
+                                      gfx::PresentationFeedback::kVSync |
+                                          gfx::PresentationFeedback::kHWClock));
+    pending_frames_.pop_front();
+  }
+
+  StartOrStopVSyncThread();
+}
+
+void DirectCompositionSurfaceWin::EnqueuePendingFrame(
+    PresentationCallback callback,
+    bool create_query) {
+  Microsoft::WRL::ComPtr<ID3D11Query> query;
+  if (create_query) {
+    D3D11_QUERY_DESC desc = {};
+    desc.Query = D3D11_QUERY_EVENT;
+    HRESULT hr = d3d11_device_->CreateQuery(&desc, &query);
+    if (SUCCEEDED(hr)) {
+      Microsoft::WRL::ComPtr<ID3D11DeviceContext> context;
+      d3d11_device_->GetImmediateContext(&context);
+      context->End(query.Get());
+      context->Flush();
+    } else {
+      DLOG(ERROR) << "CreateQuery failed with error 0x" << std::hex << hr;
+    }
+  }
+
+  pending_frames_.emplace_back(std::move(query), std::move(callback));
+
+  StartOrStopVSyncThread();
+}
+
 }  // namespace gl
diff --git a/ui/gl/direct_composition_surface_win.h b/ui/gl/direct_composition_surface_win.h
index c444cee..cb2b544 100644
--- a/ui/gl/direct_composition_surface_win.h
+++ b/ui/gl/direct_composition_surface_win.h
@@ -10,7 +10,10 @@
 #include <dcomp.h>
 #include <wrl/client.h>
 
+#include "base/containers/circular_deque.h"
+#include "base/memory/raw_ptr.h"
 #include "base/memory/scoped_refptr.h"
+#include "base/synchronization/lock.h"
 #include "base/time/time.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "ui/gfx/geometry/transform.h"
@@ -19,6 +22,10 @@
 #include "ui/gl/gl_surface_egl.h"
 #include "ui/gl/vsync_observer.h"
 
+namespace base {
+class SequencedTaskRunner;
+}  // namespace base
+
 namespace gfx {
 namespace mojom {
 class DelegatedInkPointRenderer;
@@ -27,10 +34,12 @@
 }  // namespace gfx
 
 namespace gl {
+class VSyncThreadWin;
 class DCLayerTree;
 class DirectCompositionChildSurfaceWin;
 
-class GL_EXPORT DirectCompositionSurfaceWin : public GLSurfaceEGL {
+class GL_EXPORT DirectCompositionSurfaceWin : public GLSurfaceEGL,
+                                              public VSyncObserver {
  public:
   using VSyncCallback =
       base::RepeatingCallback<void(base::TimeTicks, base::TimeDelta)>;
@@ -94,6 +103,9 @@
       std::unique_ptr<ui::DCRendererLayerParams> params) override;
   void SetFrameRate(float frame_rate) override;
 
+  // VSyncObserver implementation.
+  void OnVSync(base::TimeTicks vsync_time, base::TimeDelta interval) override;
+
   bool SupportsDelegatedInk() override;
   void SetDelegatedInkTrailStartPoint(
       std::unique_ptr<gfx::DelegatedInkMetadata> metadata) override;
@@ -125,11 +137,55 @@
   ~DirectCompositionSurfaceWin() override;
 
  private:
+  struct PendingFrame {
+    PendingFrame(Microsoft::WRL::ComPtr<ID3D11Query> query,
+                 PresentationCallback callback);
+    PendingFrame(PendingFrame&& other);
+    ~PendingFrame();
+    PendingFrame& operator=(PendingFrame&& other);
+
+    // Event query issued after frame is presented.
+    Microsoft::WRL::ComPtr<ID3D11Query> query;
+
+    // Presentation callback enqueued in SwapBuffers().
+    PresentationCallback callback;
+  };
+
+  void EnqueuePendingFrame(PresentationCallback callback, bool create_query);
+  void CheckPendingFrames();
+
+  void StartOrStopVSyncThread();
+
+  bool VSyncCallbackEnabled() const;
+
+  void HandleVSyncOnMainThread(base::TimeTicks vsync_time,
+                               base::TimeDelta interval);
+
   HWND window_ = nullptr;
   ChildWindowWin child_window_;
 
+  Microsoft::WRL::ComPtr<ID3D11Device> d3d11_device_;
+
+  const VSyncCallback vsync_callback_;
+
+  const raw_ptr<VSyncThreadWin> vsync_thread_;
+  scoped_refptr<base::SequencedTaskRunner> task_runner_;
+
+  bool vsync_thread_started_ = false;
+  bool vsync_callback_enabled_ GUARDED_BY(vsync_callback_enabled_lock_) = false;
+  mutable base::Lock vsync_callback_enabled_lock_;
+
+  // Queue of pending presentation callbacks.
+  base::circular_deque<PendingFrame> pending_frames_;
+  const size_t max_pending_frames_;
+
+  base::TimeTicks last_vsync_time_;
+  base::TimeDelta last_vsync_interval_;
+
   scoped_refptr<DirectCompositionChildSurfaceWin> root_surface_;
   std::unique_ptr<DCLayerTree> layer_tree_;
+
+  base::WeakPtrFactory<DirectCompositionSurfaceWin> weak_factory_{this};
 };
 
 }  // namespace gl
diff --git a/ui/ozone/platform/wayland/host/wayland_surface.cc b/ui/ozone/platform/wayland/host/wayland_surface.cc
index a13e1247..a7d45cf7 100644
--- a/ui/ozone/platform/wayland/host/wayland_surface.cc
+++ b/ui/ozone/platform/wayland/host/wayland_surface.cc
@@ -584,9 +584,11 @@
         gfx::ScaleRect(crop_transformed, bounds.width(), bounds.height());
     DCHECK(viewport());
     if (wl_fixed_from_double(viewport_src_dip.width()) == 0 ||
-        wl_fixed_from_double(viewport_src_dip.height()) == 0) {
-      LOG(ERROR) << "Sending viewport src with width/height zero will result "
-                    "in wayland disconnection";
+        wl_fixed_from_double(viewport_src_dip.height()) == 0 ||
+        wl_fixed_from_double(viewport_src_dip.x()) < 0 ||
+        wl_fixed_from_double(viewport_src_dip.y()) < 0) {
+      LOG(ERROR) << "Sending viewport src with width/height zero or negative "
+                    "origin will result in wayland disconnection";
       // TODO(crbug.com/1325344): Resolve why this viewport size ends up being
       // zero and remove the fix below.
       LOG(ERROR) << "viewport_src_dip=" << viewport_src_dip.ToString()
@@ -604,6 +606,8 @@
           std::max(viewport_src_dip.width(), kViewPortSizeMinFloat));
       viewport_src_dip.set_height(
           std::max(viewport_src_dip.height(), kViewPortSizeMinFloat));
+      viewport_src_dip.set_x(std::max(viewport_src_dip.x(), 0.f));
+      viewport_src_dip.set_y(std::max(viewport_src_dip.y(), 0.f));
     }
     src_to_set[0] = wl_fixed_from_double(viewport_src_dip.x()),
     src_to_set[1] = wl_fixed_from_double(viewport_src_dip.y());
diff --git a/ui/shell_dialogs/select_file_dialog_linux_portal.cc b/ui/shell_dialogs/select_file_dialog_linux_portal.cc
index 36fcc28..d1c0e41 100644
--- a/ui/shell_dialogs/select_file_dialog_linux_portal.cc
+++ b/ui/shell_dialogs/select_file_dialog_linux_portal.cc
@@ -4,14 +4,15 @@
 
 #include "ui/shell_dialogs/select_file_dialog_linux_portal.h"
 
-#include "base/bind.h"
 #include "base/containers/contains.h"
+#include "base/functional/bind.h"
 #include "base/logging.h"
 #include "base/memory/weak_ptr.h"
 #include "base/no_destructor.h"
 #include "base/notreached.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
+#include "base/task/sequenced_task_runner.h"
 #include "base/time/time.h"
 #include "components/dbus/thread_linux/dbus_thread_linux.h"
 #include "dbus/object_path.h"
@@ -20,6 +21,7 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/native_widget_types.h"
 #include "ui/linux/linux_ui_delegate.h"
+#include "ui/shell_dialogs/select_file_dialog.h"
 #include "ui/strings/grit/ui_strings.h"
 #include "url/gurl.h"
 #include "url/url_util.h"
@@ -118,6 +120,34 @@
   writer->CloseContainer(&option_writer);
 }
 
+scoped_refptr<dbus::Bus>* AcquireBusStorageOnBusThread() {
+  static base::NoDestructor<scoped_refptr<dbus::Bus>> bus(nullptr);
+  if (!*bus) {
+    dbus::Bus::Options options;
+    options.bus_type = dbus::Bus::SESSION;
+    options.connection_type = dbus::Bus::PRIVATE;
+    options.dbus_task_runner = dbus_thread_linux::GetTaskRunner();
+
+    *bus = base::MakeRefCounted<dbus::Bus>(options);
+  }
+
+  return bus.get();
+}
+
+dbus::Bus* AcquireBusOnBusThread() {
+  return AcquireBusStorageOnBusThread()->get();
+}
+
+void DestroyBusOnBusThread() {
+  scoped_refptr<dbus::Bus>* bus_storage = AcquireBusStorageOnBusThread();
+  (*bus_storage)->ShutdownAndBlock();
+
+  // If the connection is restarted later on, we need to make sure the entire
+  // bus is newly created. Otherwise, references to an old, invalid task runner
+  // may persist.
+  bus_storage->reset();
+}
+
 }  // namespace
 
 SelectFileDialogLinuxPortal::SelectFileDialogLinuxPortal(
@@ -149,15 +179,14 @@
 // static
 void SelectFileDialogLinuxPortal::DestroyPortalConnection() {
   dbus_thread_linux::GetTaskRunner()->PostTask(
-      FROM_HERE,
-      base::BindOnce(&SelectFileDialogLinuxPortal::DestroyBusOnBusThread));
+      FROM_HERE, base::BindOnce(&DestroyBusOnBusThread));
 }
 
 bool SelectFileDialogLinuxPortal::IsRunning(
     gfx::NativeWindow parent_window) const {
   if (parent_window && parent_window->GetHost()) {
     auto window = parent_window->GetHost()->GetAcceleratedWidget();
-    return parents_.find(window) != parents_.end();
+    return parent_ && parent_.value() == window;
   }
 
   return false;
@@ -174,14 +203,19 @@
     void* params,
     const GURL* caller) {
   CheckCalledOnValidSequence();
-  auto info = base::MakeRefCounted<DialogInfo>();
+
+  auto info = base::MakeRefCounted<DialogInfo>(
+      base::BindOnce(&SelectFileDialogLinuxPortal::CompleteOpenOnMainThread,
+                     base::AsWeakPtr(this)),
+      base::BindOnce(&SelectFileDialogLinuxPortal::CancelOpenOnMainThread,
+                     base::AsWeakPtr(this)));
+  info_ = info;
   info->type = type;
   info->main_task_runner = base::SequencedTaskRunnerHandle::Get();
-  info->listener_params = params;
+  listener_params_ = params;
 
   if (owning_window && owning_window->GetHost()) {
-    info->parent = owning_window->GetHost()->GetAcceleratedWidget();
-    parents_.insert(*info->parent);
+    parent_ = owning_window->GetHost()->GetAcceleratedWidget();
   }
 
   if (file_types)
@@ -195,16 +229,14 @@
   // and returned to listeners later.
   filters_ = filter_set.filters;
 
-  if (info->parent) {
+  if (parent_) {
     auto* delegate = ui::LinuxUiDelegate::GetInstance();
     if (delegate &&
         delegate->ExportWindowHandle(
-            *info->parent,
+            *parent_,
             base::BindOnce(
                 &SelectFileDialogLinuxPortal::SelectFileImplWithParentHandle,
-                // Note that we can't move any of the parameters, as the
-                // fallback case below requires them to all still be available.
-                base::AsWeakPtr(this), info, title, default_path, filter_set,
+                base::AsWeakPtr(this), title, default_path, filter_set,
                 default_extension))) {
       // Return early to skip the fallback below.
       return;
@@ -214,9 +246,8 @@
   }
 
   // No parent, so just use a blank parent handle.
-  SelectFileImplWithParentHandle(std::move(info), std::move(title),
-                                 std::move(default_path), std::move(filter_set),
-                                 std::move(default_extension), "");
+  SelectFileImplWithParentHandle(title, default_path, filter_set,
+                                 default_extension, "");
 }
 
 bool SelectFileDialogLinuxPortal::HasMultipleFileTypeChoicesImpl() {
@@ -225,6 +256,7 @@
 
 // static
 void SelectFileDialogLinuxPortal::CheckPortalAvailabilityOnBusThread() {
+  DCHECK(dbus_thread_linux::GetTaskRunner()->RunsTasksInCurrentSequence());
   base::AtomicFlag* availability_test_complete =
       GetAvailabilityTestCompletionFlag();
   if (availability_test_complete->IsSet())
@@ -329,41 +361,14 @@
     PortalFilterSet&& other) = default;
 SelectFileDialogLinuxPortal::PortalFilterSet::~PortalFilterSet() = default;
 
-SelectFileDialogLinuxPortal::DialogInfo::DialogInfo() = default;
+SelectFileDialogLinuxPortal::DialogInfo::DialogInfo(
+    OnSelectFileExecutedCallback selected_callback,
+    OnSelectFileCanceledCallback canceled_callback)
+    : selected_callback_(std::move(selected_callback)),
+      canceled_callback_(std::move(canceled_callback)) {}
 SelectFileDialogLinuxPortal::DialogInfo::~DialogInfo() = default;
 
 // static
-scoped_refptr<dbus::Bus>*
-SelectFileDialogLinuxPortal::AcquireBusStorageOnBusThread() {
-  static base::NoDestructor<scoped_refptr<dbus::Bus>> bus(nullptr);
-  if (!*bus) {
-    dbus::Bus::Options options;
-    options.bus_type = dbus::Bus::SESSION;
-    options.connection_type = dbus::Bus::PRIVATE;
-    options.dbus_task_runner = dbus_thread_linux::GetTaskRunner();
-
-    *bus = base::MakeRefCounted<dbus::Bus>(options);
-  }
-
-  return bus.get();
-}
-
-// static
-dbus::Bus* SelectFileDialogLinuxPortal::AcquireBusOnBusThread() {
-  return AcquireBusStorageOnBusThread()->get();
-}
-
-void SelectFileDialogLinuxPortal::DestroyBusOnBusThread() {
-  scoped_refptr<dbus::Bus>* bus_storage = AcquireBusStorageOnBusThread();
-  (*bus_storage)->ShutdownAndBlock();
-
-  // If the connection is restarted later on, we need to make sure the entire
-  // bus is newly created. Otherwise, references to an old, invalid task runner
-  // may persist.
-  bus_storage->reset();
-}
-
-// static
 base::AtomicFlag*
 SelectFileDialogLinuxPortal::GetAvailabilityTestCompletionFlag() {
   static base::NoDestructor<base::AtomicFlag> flag;
@@ -423,33 +428,36 @@
 }
 
 void SelectFileDialogLinuxPortal::SelectFileImplWithParentHandle(
-    scoped_refptr<DialogInfo> info,
     std::u16string title,
     base::FilePath default_path,
     PortalFilterSet filter_set,
     base::FilePath::StringType default_extension,
     std::string parent_handle) {
+  CheckCalledOnValidSequence();
+  bool default_path_exists = CallDirectoryExistsOnUIThread(default_path);
   dbus_thread_linux::GetTaskRunner()->PostTask(
       FROM_HERE,
-      base::BindOnce(&SelectFileDialogLinuxPortal::SelectFileImplOnBusThread,
-                     base::AsWeakPtr(this), std::move(info), std::move(title),
-                     std::move(default_path), std::move(filter_set),
-                     std::move(default_extension), std::move(parent_handle)));
+      base::BindOnce(
+          &SelectFileDialogLinuxPortal::DialogInfo::SelectFileImplOnBusThread,
+          info_, std::move(title), std::move(default_path), default_path_exists,
+          std::move(filter_set), std::move(default_extension),
+          std::move(parent_handle)));
 }
 
-void SelectFileDialogLinuxPortal::SelectFileImplOnBusThread(
-    scoped_refptr<DialogInfo> info,
+void SelectFileDialogLinuxPortal::DialogInfo::SelectFileImplOnBusThread(
     std::u16string title,
     base::FilePath default_path,
+    const bool default_path_exists,
     PortalFilterSet filter_set,
     base::FilePath::StringType default_extension,
     std::string parent_handle) {
+  DCHECK(dbus_thread_linux::GetTaskRunner()->RunsTasksInCurrentSequence());
   dbus::Bus* bus = AcquireBusOnBusThread();
   if (!bus->Connect())
     LOG(ERROR) << "Could not connect to bus for XDG portal";
 
   std::string method;
-  switch (info->type) {
+  switch (type) {
     case SELECT_FOLDER:
     case SELECT_UPLOAD_FOLDER:
     case SELECT_EXISTING_FOLDER:
@@ -474,9 +482,9 @@
     writer.AppendString(base::UTF16ToUTF8(title));
   } else {
     int message_id = 0;
-    if (info->type == SELECT_SAVEAS_FILE) {
+    if (type == SELECT_SAVEAS_FILE) {
       message_id = IDS_SAVEAS_ALL_FILES;
-    } else if (info->type == SELECT_OPEN_MULTI_FILE) {
+    } else if (type == SELECT_OPEN_MULTI_FILE) {
       message_id = IDS_OPEN_FILES_DIALOG_TITLE;
     } else {
       message_id = IDS_OPEN_FILE_DIALOG_TITLE;
@@ -487,8 +495,8 @@
   std::string response_handle_token =
       base::StringPrintf("handle_%d", handle_token_counter_++);
 
-  AppendOptions(&writer, info->type, response_handle_token, default_path,
-                filter_set);
+  AppendOptions(&writer, response_handle_token, default_path,
+                default_path_exists, filter_set);
 
   // The sender part of the handle object contains the D-Bus connection name
   // without the prefix colon and with all dots replaced with underscores.
@@ -500,46 +508,47 @@
       base::StringPrintf("/org/freedesktop/portal/desktop/request/%s/%s",
                          sender_part.c_str(), response_handle_token.c_str()));
 
-  info->response_handle =
+  response_handle_ =
       bus->GetObjectProxy(kXdgPortalService, expected_handle_path);
-  ConnectToHandle(info);
+  ConnectToHandle();
 
   dbus::ObjectPath portal_path(kXdgPortalObject);
   dbus::ObjectProxy* portal =
       bus->GetObjectProxy(kXdgPortalService, portal_path);
   portal->CallMethodWithErrorResponse(
       &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
-      base::BindOnce(&SelectFileDialogLinuxPortal::OnCallResponse,
-                     base::AsWeakPtr(this), base::Unretained(bus), info));
+      base::BindOnce(&DialogInfo::OnCallResponse, this, base::Unretained(bus)));
 }
 
-void SelectFileDialogLinuxPortal::AppendOptions(
+void SelectFileDialogLinuxPortal::DialogInfo::AppendOptions(
     dbus::MessageWriter* writer,
-    Type type,
     const std::string& response_handle_token,
     const base::FilePath& default_path,
-    const PortalFilterSet& filter_set) {
+    const bool default_path_exists,
+    const SelectFileDialogLinuxPortal::PortalFilterSet& filter_set) {
   dbus::MessageWriter options_writer(nullptr);
   writer->OpenArray("{sv}", &options_writer);
 
   AppendStringOption(&options_writer, kFileChooserOptionHandleToken,
                      response_handle_token);
 
-  if (type == SELECT_UPLOAD_FOLDER) {
+  if (type == SelectFileDialog::Type::SELECT_UPLOAD_FOLDER) {
     AppendStringOption(&options_writer, kFileChooserOptionAcceptLabel,
                        l10n_util::GetStringUTF8(
                            IDS_SELECT_UPLOAD_FOLDER_DIALOG_UPLOAD_BUTTON));
   }
 
-  if (type == SELECT_FOLDER || type == SELECT_UPLOAD_FOLDER ||
-      type == SELECT_EXISTING_FOLDER) {
+  if (type == SelectFileDialog::Type::SELECT_FOLDER ||
+      type == SelectFileDialog::Type::SELECT_UPLOAD_FOLDER ||
+      type == SelectFileDialog::Type::SELECT_EXISTING_FOLDER) {
     AppendBoolOption(&options_writer, kFileChooserOptionDirectory, true);
-  } else if (type == SELECT_OPEN_MULTI_FILE) {
+  } else if (type == SelectFileDialog::Type::SELECT_OPEN_MULTI_FILE) {
     AppendBoolOption(&options_writer, kFileChooserOptionMultiple, true);
   }
 
-  if (type == SELECT_SAVEAS_FILE && !default_path.empty()) {
-    if (CallDirectoryExistsOnUIThread(default_path)) {
+  if (type == SelectFileDialog::Type::SELECT_SAVEAS_FILE &&
+      !default_path.empty()) {
+    if (default_path_exists) {
       // If this is an existing directory, navigate to that directory, with no
       // filename.
       AppendByteStringOption(&options_writer, kFileChooserOptionCurrentFolder,
@@ -574,7 +583,7 @@
   writer->CloseContainer(&options_writer);
 }
 
-void SelectFileDialogLinuxPortal::AppendFiltersOption(
+void SelectFileDialogLinuxPortal::DialogInfo::AppendFiltersOption(
     dbus::MessageWriter* writer,
     const std::vector<PortalFilter>& filters) {
   dbus::MessageWriter option_writer(nullptr);
@@ -597,7 +606,7 @@
   writer->CloseContainer(&option_writer);
 }
 
-void SelectFileDialogLinuxPortal::AppendFilterStruct(
+void SelectFileDialogLinuxPortal::DialogInfo::AppendFilterStruct(
     dbus::MessageWriter* writer,
     const PortalFilter& filter) {
   dbus::MessageWriter filter_writer(nullptr);
@@ -622,45 +631,38 @@
   writer->CloseContainer(&filter_writer);
 }
 
-void SelectFileDialogLinuxPortal::ConnectToHandle(
-    scoped_refptr<DialogInfo> info) {
-  info->response_handle->ConnectToSignal(
+void SelectFileDialogLinuxPortal::DialogInfo::ConnectToHandle() {
+  DCHECK(dbus_thread_linux::GetTaskRunner()->RunsTasksInCurrentSequence());
+  response_handle_->ConnectToSignal(
       kXdgPortalRequestInterfaceName, kXdgPortalResponseSignal,
-      base::BindRepeating(&SelectFileDialogLinuxPortal::OnResponseSignalEmitted,
-                          base::AsWeakPtr(this), info),
-      base::BindOnce(&SelectFileDialogLinuxPortal::OnResponseSignalConnected,
-                     base::AsWeakPtr(this), info));
+      base::BindRepeating(&DialogInfo::OnResponseSignalEmitted, this),
+      base::BindOnce(&DialogInfo::OnResponseSignalConnected, this));
 }
 
-void SelectFileDialogLinuxPortal::CompleteOpen(
-    scoped_refptr<DialogInfo> info,
+void SelectFileDialogLinuxPortal::DialogInfo::CompleteOpen(
     std::vector<base::FilePath> paths,
     std::string current_filter) {
-  info->response_handle->Detach();
-  info->main_task_runner->PostTask(
-      FROM_HERE,
-      base::BindOnce(&SelectFileDialogLinuxPortal::CompleteOpenOnMainThread,
-                     base::AsWeakPtr(this), info, std::move(paths),
-                     std::move(current_filter)));
+  DCHECK(dbus_thread_linux::GetTaskRunner()->RunsTasksInCurrentSequence());
+  response_handle_->Detach();
+  main_task_runner->PostTask(
+      FROM_HERE, base::BindOnce(std::move(selected_callback_), std::move(paths),
+                                std::move(current_filter)));
 }
 
-void SelectFileDialogLinuxPortal::CancelOpen(scoped_refptr<DialogInfo> info) {
-  info->response_handle->Detach();
-  info->main_task_runner->PostTask(
-      FROM_HERE,
-      base::BindOnce(&SelectFileDialogLinuxPortal::CancelOpenOnMainThread,
-                     base::AsWeakPtr(this), info));
+void SelectFileDialogLinuxPortal::DialogInfo::CancelOpen() {
+  response_handle_->Detach();
+  main_task_runner->PostTask(FROM_HERE, std::move(canceled_callback_));
 }
 
 void SelectFileDialogLinuxPortal::CompleteOpenOnMainThread(
-    scoped_refptr<DialogInfo> info,
     std::vector<base::FilePath> paths,
     std::string current_filter) {
-  UnparentOnMainThread(info.get());
+  CheckCalledOnValidSequence();
+  UnparentOnMainThread();
 
   if (listener_) {
-    if (info->type == SELECT_OPEN_MULTI_FILE) {
-      listener_->MultiFilesSelected(paths, info->listener_params);
+    if (info_->type == SELECT_OPEN_MULTI_FILE) {
+      listener_->MultiFilesSelected(paths, listener_params_);
     } else if (paths.size() > 1) {
       LOG(ERROR) << "Got >1 file URI from a single-file chooser";
     } else {
@@ -671,45 +673,43 @@
           break;
         }
       }
-      listener_->FileSelected(paths.front(), index, info->listener_params);
+      listener_->FileSelected(paths.front(), index, listener_params_);
     }
   }
 }
 
-void SelectFileDialogLinuxPortal::CancelOpenOnMainThread(
-    scoped_refptr<DialogInfo> info) {
-  UnparentOnMainThread(info.get());
+void SelectFileDialogLinuxPortal::CancelOpenOnMainThread() {
+  UnparentOnMainThread();
 
   if (listener_)
-    listener_->FileSelectionCanceled(info->listener_params);
+    listener_->FileSelectionCanceled(listener_params_);
 }
 
-void SelectFileDialogLinuxPortal::UnparentOnMainThread(DialogInfo* info) {
-  if (info->parent) {
-    parents_.erase(*info->parent);
-    info->parent.reset();
+void SelectFileDialogLinuxPortal::UnparentOnMainThread() {
+  if (parent_) {
+    parent_.reset();
   }
 }
 
-void SelectFileDialogLinuxPortal::OnCallResponse(
+void SelectFileDialogLinuxPortal::DialogInfo::OnCallResponse(
     dbus::Bus* bus,
-    scoped_refptr<DialogInfo> info,
     dbus::Response* response,
     dbus::ErrorResponse* error_response) {
+  DCHECK(dbus_thread_linux::GetTaskRunner()->RunsTasksInCurrentSequence());
   if (response) {
     dbus::MessageReader reader(response);
     dbus::ObjectPath actual_handle_path;
     if (!reader.PopObjectPath(&actual_handle_path)) {
       LOG(ERROR) << "Invalid portal response";
     } else {
-      if (info->response_handle->object_path() != actual_handle_path) {
+      if (response_handle_->object_path() != actual_handle_path) {
         VLOG(1) << "Re-attaching response handle to "
                 << actual_handle_path.value();
 
-        info->response_handle->Detach();
-        info->response_handle =
+        response_handle_->Detach();
+        response_handle_ =
             bus->GetObjectProxy(kXdgPortalService, actual_handle_path);
-        ConnectToHandle(info);
+        ConnectToHandle();
       }
 
       // Return before the operation is cancelled.
@@ -728,41 +728,41 @@
   }
 
   // All error paths end up here.
-  CancelOpen(std::move(info));
+  CancelOpen();
 }
 
-void SelectFileDialogLinuxPortal::OnResponseSignalConnected(
-    scoped_refptr<DialogInfo> info,
+void SelectFileDialogLinuxPortal::DialogInfo::OnResponseSignalConnected(
     const std::string& interface,
     const std::string& signal,
     bool connected) {
+  DCHECK(dbus_thread_linux::GetTaskRunner()->RunsTasksInCurrentSequence());
   if (!connected) {
     LOG(ERROR) << "Could not connect to Response signal";
-    CancelOpen(std::move(info));
+    CancelOpen();
   }
 }
 
-void SelectFileDialogLinuxPortal::OnResponseSignalEmitted(
-    scoped_refptr<DialogInfo> info,
+void SelectFileDialogLinuxPortal::DialogInfo::OnResponseSignalEmitted(
     dbus::Signal* signal) {
+  DCHECK(dbus_thread_linux::GetTaskRunner()->RunsTasksInCurrentSequence());
   dbus::MessageReader reader(signal);
 
   std::vector<std::string> uris;
   std::string current_filter;
   if (!CheckResponseCode(&reader) ||
       !ReadResponseResults(&reader, &uris, &current_filter)) {
-    CancelOpen(std::move(info));
+    CancelOpen();
     return;
   }
 
   std::vector<base::FilePath> paths = ConvertUrisToPaths(uris);
   if (!paths.empty())
-    CompleteOpen(std::move(info), std::move(paths), std::move(current_filter));
+    CompleteOpen(std::move(paths), std::move(current_filter));
   else
-    CancelOpen(std::move(info));
+    CancelOpen();
 }
 
-bool SelectFileDialogLinuxPortal::CheckResponseCode(
+bool SelectFileDialogLinuxPortal::DialogInfo::CheckResponseCode(
     dbus::MessageReader* reader) {
   std::uint32_t response = 0;
   if (!reader->PopUint32(&response)) {
@@ -775,7 +775,7 @@
   return true;
 }
 
-bool SelectFileDialogLinuxPortal::ReadResponseResults(
+bool SelectFileDialogLinuxPortal::DialogInfo::ReadResponseResults(
     dbus::MessageReader* reader,
     std::vector<std::string>* uris,
     std::string* current_filter) {
@@ -816,7 +816,8 @@
   return true;
 }
 
-std::vector<base::FilePath> SelectFileDialogLinuxPortal::ConvertUrisToPaths(
+std::vector<base::FilePath>
+SelectFileDialogLinuxPortal::DialogInfo::ConvertUrisToPaths(
     const std::vector<std::string>& uris) {
   std::vector<base::FilePath> paths;
   for (const std::string& uri : uris) {
diff --git a/ui/shell_dialogs/select_file_dialog_linux_portal.h b/ui/shell_dialogs/select_file_dialog_linux_portal.h
index dd912d1..7e5ffe6 100644
--- a/ui/shell_dialogs/select_file_dialog_linux_portal.h
+++ b/ui/shell_dialogs/select_file_dialog_linux_portal.h
@@ -5,6 +5,7 @@
 #ifndef UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_LINUX_PORTAL_H_
 #define UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_LINUX_PORTAL_H_
 
+#include "base/functional/callback_forward.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_refptr.h"
@@ -16,6 +17,10 @@
 #include "ui/shell_dialogs/select_file_dialog_linux.h"
 
 namespace ui {
+using OnSelectFileExecutedCallback =
+    base::OnceCallback<void(std::vector<base::FilePath> paths,
+                            std::string current_filter)>;
+using OnSelectFileCanceledCallback = base::OnceCallback<void()>;
 
 // Implementation of SelectFileDialog that has the XDG file chooser portal show
 // a platform-dependent file selection dialog. This acts as a modal dialog.
@@ -91,35 +96,78 @@
   };
 
   // A wrapper over some shared contextual information that needs to be passed
-  // around between various handler functions. This is ref-counted due to some
-  // of the locations its used in having slightly unclear or error-prone
-  // lifetimes.
-  struct DialogInfo : base::RefCountedThreadSafe<DialogInfo> {
-    DialogInfo();
+  // around between SelectFileDialogLinuxPortal and the Portal via D-Bus.
+  // This is ref-counted due to sharing between the 2 sequences: dbus sequence
+  // and main sequence.
+  // Usage: SelectFileDialogLinuxPortal instantiates DialogInfo with the 2
+  // callbacks, sets the public members and then call SelectFileImplOnDbus().
+  // DialogInfo notifies the end result via one of the callbacks.
+  class DialogInfo : public base::RefCountedThreadSafe<DialogInfo> {
+   public:
+    DialogInfo(OnSelectFileExecutedCallback selected_callback,
+               OnSelectFileCanceledCallback canceled_callback);
 
-    // The response object handle that the portal will send a signal to upon the
-    // dialog's completion.
-    raw_ptr<dbus::ObjectProxy, DanglingUntriaged> response_handle = nullptr;
-    absl::optional<gfx::AcceleratedWidget> parent;
+    // Sets up listeners for the response handle's signals.
+    void SelectFileImplOnBusThread(std::u16string title,
+                                   base::FilePath default_path,
+                                   const bool default_path_exists,
+                                   PortalFilterSet filter_set,
+                                   base::FilePath::StringType default_extension,
+                                   std::string parent_handle);
     Type type;
     // The task runner the SelectFileImpl method was called on.
     scoped_refptr<base::SequencedTaskRunner> main_task_runner;
-    // The untyped params to pass to the listener.
-    raw_ptr<void> listener_params = nullptr;
 
    private:
     friend class base::RefCountedThreadSafe<DialogInfo>;
-
     ~DialogInfo();
+
+    // Should run on D-Bus thread.
+    void ConnectToHandle();
+    void OnCallResponse(dbus::Bus* bus,
+                        dbus::Response* response,
+                        dbus::ErrorResponse* error_response);
+    void OnResponseSignalEmitted(dbus::Signal* signal);
+    bool CheckResponseCode(dbus::MessageReader* reader);
+    bool ReadResponseResults(dbus::MessageReader* reader,
+                             std::vector<std::string>* uris,
+                             std::string* current_filter);
+    void OnResponseSignalConnected(const std::string& interface,
+                                   const std::string& signal,
+                                   bool connected);
+    void AppendFiltersOption(dbus::MessageWriter* writer,
+                             const std::vector<PortalFilter>& filters);
+    void AppendOptions(dbus::MessageWriter* writer,
+                       const std::string& response_handle_token,
+                       const base::FilePath& default_path,
+                       const bool derfault_path_exists,
+                       const PortalFilterSet& filter_set);
+    void AppendFilterStruct(dbus::MessageWriter* writer,
+                            const PortalFilter& filter);
+    std::vector<base::FilePath> ConvertUrisToPaths(
+        const std::vector<std::string>& uris);
+
+    // Completes an open call, notifying the listener with the given paths, and
+    // marks the dialog as closed.
+    void CompleteOpen(std::vector<base::FilePath> paths,
+                      std::string current_filter);
+    // Completes an open call, notifying the listener with a cancellation, and
+    // marks the dialog as closed.
+    void CancelOpen();
+
+    // These callbacks should run on main thread.
+    // It will point to SelectFileDialogPortal::CompleteOpenOnMainThread.
+    OnSelectFileExecutedCallback selected_callback_;
+    // It will point to SelectFileDialogPortal::CancelOpenOnMainThread.
+    OnSelectFileCanceledCallback canceled_callback_;
+
+    // The response object handle that the portal will send a signal to upon the
+    // dialog's completion.
+    raw_ptr<dbus::ObjectProxy, DanglingUntriaged> response_handle_ = nullptr;
   };
 
-  static scoped_refptr<dbus::Bus>* AcquireBusStorageOnBusThread();
-  static dbus::Bus* AcquireBusOnBusThread();
-
-  static void DestroyBusOnBusThread();
-
+  // D-Bus configuration and initialization.
   static void CheckPortalAvailabilityOnBusThread();
-
   static bool IsPortalRunningOnBusThread(dbus::ObjectProxy* dbus_proxy);
   static bool IsPortalActivatableOnBusThread(dbus::ObjectProxy* dbus_proxy);
 
@@ -130,71 +178,28 @@
   PortalFilterSet BuildFilterSet();
 
   void SelectFileImplWithParentHandle(
-      scoped_refptr<DialogInfo> info,
       std::u16string title,
       base::FilePath default_path,
       PortalFilterSet filter_set,
       base::FilePath::StringType default_extension,
       std::string parent_handle);
 
-  void SelectFileImplOnBusThread(scoped_refptr<DialogInfo> info,
-                                 std::u16string title,
-                                 base::FilePath default_path,
-                                 PortalFilterSet filter_set,
-                                 base::FilePath::StringType default_extension,
-                                 std::string parent_handle);
-
-  void AppendOptions(dbus::MessageWriter* writer,
-                     Type type,
-                     const std::string& response_handle_token,
-                     const base::FilePath& default_path,
-                     const PortalFilterSet& filter_set);
-  void AppendFiltersOption(dbus::MessageWriter* writer,
-                           const std::vector<PortalFilter>& filters);
-  void AppendFilterStruct(dbus::MessageWriter* writer,
-                          const PortalFilter& filter);
-
-  // Sets up listeners for the response handle's signals.
-  void ConnectToHandle(scoped_refptr<DialogInfo> info);
-
-  // Completes an open call, notifying the listener with the given paths, and
-  // marks the dialog as closed.
-  void CompleteOpen(scoped_refptr<DialogInfo> info,
-                    std::vector<base::FilePath> paths,
-                    std::string current_filter);
-  // Completes an open call, notifying the listener with a cancellation, and
-  // marks the dialog as closed.
-  void CancelOpen(scoped_refptr<DialogInfo> info);
-
-  void CompleteOpenOnMainThread(scoped_refptr<DialogInfo> info,
-                                std::vector<base::FilePath> paths,
+  void CompleteOpenOnMainThread(std::vector<base::FilePath> paths,
                                 std::string current_filter);
-  void CancelOpenOnMainThread(scoped_refptr<DialogInfo> info);
+  void CancelOpenOnMainThread();
 
   // Removes the DialogInfo parent. Must be called on the UI task runner.
-  void UnparentOnMainThread(DialogInfo* info);
+  void UnparentOnMainThread();
 
-  void OnCallResponse(dbus::Bus* bus,
-                      scoped_refptr<DialogInfo> info,
-                      dbus::Response* response,
-                      dbus::ErrorResponse* error_response);
+  // This should be used in the main thread.
+  absl::optional<gfx::AcceleratedWidget> parent_;
 
-  void OnResponseSignalConnected(scoped_refptr<DialogInfo> info,
-                                 const std::string& interface,
-                                 const std::string& signal,
-                                 bool connected);
+  // The untyped params to pass to the listener, it should be used in the main
+  // thread.
+  raw_ptr<void> listener_params_ = nullptr;
 
-  void OnResponseSignalEmitted(scoped_refptr<DialogInfo> info,
-                               dbus::Signal* signal);
-
-  bool CheckResponseCode(dbus::MessageReader* reader);
-  bool ReadResponseResults(dbus::MessageReader* reader,
-                           std::vector<std::string>* uris,
-                           std::string* current_filter);
-  std::vector<base::FilePath> ConvertUrisToPaths(
-      const std::vector<std::string>& uris);
-
-  std::set<gfx::AcceleratedWidget> parents_;
+  // Data shared across main thread and D-Bus thread.
+  scoped_refptr<DialogInfo> info_;
 
   // Written by the D-Bus thread and read by the UI thread.
   static bool is_portal_available_;
diff --git a/ui/views/bubble/bubble_dialog_model_host.cc b/ui/views/bubble/bubble_dialog_model_host.cc
index 8fc7aff..8dcc2ba 100644
--- a/ui/views/bubble/bubble_dialog_model_host.cc
+++ b/ui/views/bubble/bubble_dialog_model_host.cc
@@ -35,6 +35,7 @@
 #include "ui/views/layout/box_layout_view.h"
 #include "ui/views/layout/fill_layout.h"
 #include "ui/views/layout/layout_provider.h"
+#include "ui/views/style/typography.h"
 #include "ui/views/view_class_properties.h"
 
 namespace views {
@@ -390,9 +391,9 @@
         extra_button->label(GetPassKey())));
   } else if (ui::DialogModelLabel::TextReplacement* extra_link =
                  model_->extra_link(GetPassKey())) {
-    DCHECK(extra_link->callback());
+    DCHECK(extra_link->callback().has_value());
     auto link = std::make_unique<views::Link>(extra_link->text());
-    link->SetCallback(extra_link->callback());
+    link->SetCallback(extra_link->callback().value());
     SetExtraView(std::move(link));
   }
 
@@ -907,34 +908,50 @@
   return CreateLabelForDialogModelLabel(dialog_label);
 }
 
-// TODO(crbug.com/1363412): Add support for replacements with no style, and
-// emphasized style.
 std::unique_ptr<StyledLabel>
 BubbleDialogModelHost::CreateStyledLabelForDialogModelLabel(
     const ui::DialogModelLabel& dialog_label) {
   DCHECK(DialogModelLabelRequiresStyledLabel(dialog_label));
-  // TODO(pbos): Make sure this works for >1 link, it uses .front() now.
-  DCHECK_EQ(dialog_label.replacements(GetPassKey()).size(), 1u);
+  const std::vector<ui::DialogModelLabel::TextReplacement>& replacements =
+      dialog_label.replacements(GetPassKey());
 
-  size_t offset;
-  const std::u16string link_text =
-      dialog_label.replacements(GetPassKey()).front().text();
+  // Retrieve the replacements strings to create the text.
+  std::vector<std::u16string> string_replacements;
+  for (auto replacement : replacements) {
+    string_replacements.push_back(replacement.text());
+  }
+  std::vector<size_t> offsets;
   const std::u16string text = l10n_util::GetStringFUTF16(
-      dialog_label.message_id(GetPassKey()), link_text, &offset);
+      dialog_label.message_id(GetPassKey()), string_replacements, &offsets);
 
   auto styled_label = std::make_unique<StyledLabel>();
   styled_label->SetText(text);
-  auto style_info = StyledLabel::RangeStyleInfo::CreateForLink(
-      dialog_label.replacements(GetPassKey()).front().callback());
-  style_info.accessible_name =
-      dialog_label.replacements(GetPassKey()).front().accessible_name();
-  styled_label->AddStyleRange(gfx::Range(offset, offset + link_text.length()),
-                              style_info);
-
   styled_label->SetDefaultTextStyle(dialog_label.is_secondary(GetPassKey())
                                         ? style::STYLE_SECONDARY
                                         : style::STYLE_PRIMARY);
 
+  // Style the replacements as needed.
+  DCHECK_EQ(string_replacements.size(), offsets.size());
+  for (size_t i = 0; i < replacements.size(); ++i) {
+    auto replacement = replacements[i];
+    // No styling needed if replacement is neither a link nor emphasized text.
+    if (!replacement.callback().has_value() && !replacement.is_emphasized())
+      continue;
+
+    StyledLabel::RangeStyleInfo style_info;
+    if (replacement.callback().has_value()) {
+      style_info = StyledLabel::RangeStyleInfo::CreateForLink(
+          replacement.callback().value());
+      style_info.accessible_name = replacement.accessible_name().value();
+    } else if (replacement.is_emphasized()) {
+      style_info.text_style = views::style::STYLE_EMPHASIZED;
+    }
+
+    auto offset = offsets[i];
+    styled_label->AddStyleRange(
+        gfx::Range(offset, offset + replacement.text().length()), style_info);
+  }
+
   return styled_label;
 }
 
diff --git a/ui/views/bubble/tooltip_icon.cc b/ui/views/bubble/tooltip_icon.cc
index f9ea2a0f..b4d2afc8 100644
--- a/ui/views/bubble/tooltip_icon.cc
+++ b/ui/views/bubble/tooltip_icon.cc
@@ -86,7 +86,7 @@
   // static text for screenreader users, since that's the role it serves here
   // anyway.
   node_data->role = ax::mojom::Role::kStaticText;
-  node_data->SetName(tooltip_);
+  node_data->SetNameChecked(tooltip_);
 }
 
 void TooltipIcon::OnThemeChanged() {